读书人

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

发布时间: 2013-01-25 15:55:30 作者: rapoo

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

  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,

读书人网 >.NET

热点推荐