首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

未将对象引用设置到对象的实例。该怎么处理

2013-01-25 
未将对象引用设置到对象的实例。var ps from d in dt.AsEnumerable()join r in re on d.Fieldstring(p

未将对象引用设置到对象的实例。

  var ps = from d in dt.AsEnumerable()
                             join r in re on d.Field<string>("part_no") equals r.IFSID into joinedEmpDept
                             from dept in joinedEmpDept.DefaultIfEmpty() 
                             select new
                                        {
                                            IFSID = d.Field<string>("part_no"),/*从这边开始就报错了*/
                                            Description = d.Field<string>("Description"),
                                            Num = d.Field<decimal>("count_variance"),
                                            Unit = d.Field<string>("unit_meas"),
                                            IN_TRANSIT = d.Field<decimal>("IN_TRANSIT"),
                                            Price = d.Field<decimal>("price"),
                                            MAX = dept.MAX,
                                            MIN = dept.MIN
                                        };




//这样写就不报错
//但是这样写貌似不是左连接,
//dt.AsEnumerable()里面原来有十条数据,用下面的方法只能查询出5条
//既是两个表中都有的5条,另外5条没了
                      var ps = from d in dt.AsEnumerable()


                             join r in re on d.Field<string>("part_no") equals r.IFSID 
                             select new
                                        {
                                            IFSID = d.Field<string>("part_no"),
                                            Description = d.Field<string>("Description"),
                                            Num = d.Field<decimal>("count_variance"),
                                            Unit = d.Field<string>("unit_meas"),
                                            IN_TRANSIT = d.Field<decimal>("IN_TRANSIT"),
                                            Price = d.Field<decimal>("price"),
                                            MAX = r.MAX,
                                            MIN = r.MIN
                                        };



求linq中左连接语法,要能把左边的表中数据全部查询出来的
[最优解释]
如果是左连,MAX = dept.MAX dept有可能为空吗?。。。
[其他解释]
引用:
如果是左连,MAX = dept.MAX dept有可能为空吗?。。。
恩,后来添加了
 var ps = from d in dt.AsEnumerable()
                             join r in re on d.Field<string>("part_no") equals r.IFSID into joinedEmpDept


                             from dept in joinedEmpDept.DefaultIfEmpty()
                             select new
                                        {
                                            IFSID = d.Field<string>("part_no"),
                                            Description = d.Field<string>("Description"),
                                            Num = d.Field<decimal>("count_variance"),
                                            Unit = d.Field<string>("unit_meas"),
                                            IN_TRANSIT = d.Field<decimal>("IN_TRANSIT"),
                                            Price = d.Field<decimal>("price"),
                                            MAX = dept.MAX != null ? dept.MAX : 0,
                                            MIN = dept.MIN != null ? dept.MIN : 0
                                        };



我调试的时候发现整个joinedEmpDept就为null,不知道为什么
[其他解释]
最后两行写成这样就可以了
 MAX = dept != null ? dept.MAX : 0,
                                            MIN = dept != null ? dept.MIN : 0,

热点排行