【发布时间】:2014-06-21 15:28:24
【问题描述】:
我已获取如下List<> 对象(使用.Include()):
List<vDetail> entityvDetails =
context.vDetails
.Include("payInstallment.appsDetail")
.Include("payInstallment.appsDetail.application")
.Include("payInstallment.appsDetail.purposes")
.Where(e => e.vch_id == 123).ToList();
然后在前面的代码中,我尝试过滤实体记录,如下所示:
foreach (vDetail item in lstVDetails)
{
...
int purposeId = entityvDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault().payInstallment.appsDetail.purposes.prp_id;
...
}
代码编译完美。但是,运行时返回以下错误(尽管包括所有导航):
Object reference not set to an instance of an object.
所以我设置为使用监视窗口进行调试。现在在观察窗口中分析以下语句:
entityVoucherDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault()
监视窗口产生以下错误:
表达式不能包含 lambda 表达式。
如果有人可以告诉我可能是什么原因?
【问题讨论】:
-
FirstOrDefault明确允许空引用。如果您确定它永远不会为空,请使用First。在假设某些内容不为空之前,对多行的 nullref 进行更多检查。也将有助于调试。将entityvDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault()的结果分配给专用变量。
标签: c# linq entity-framework entity-framework-4 lambda