Kha*_*Ali 32 c# linq lambda entity-framework entity-framework-4
我已经获取了List<>下面的对象(with .Include()):
List<vDetail> entityvDetails =
context.vDetails
.Include("payInstallment.appsDetail")
.Include("payInstallment.appsDetail.application")
.Include("payInstallment.appsDetail.purposes")
.Where(e => e.vch_id == 123).ToList();
Run Code Online (Sandbox Code Playgroud)
然后在前面的代码中的某处我尝试过滤实体记录,如下所示:
foreach (vDetail item in lstVDetails)
{
...
int purposeId = entityvDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault().payInstallment.appsDetail.purposes.prp_id;
...
}
Run Code Online (Sandbox Code Playgroud)
代码编译完美.但是,运行时返回跟随错误(尽管包括所有导航):
Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
所以我设置使用监视窗口进行调试.现在在观察窗口中分析以下语句时:
entityVoucherDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
监视窗口生成以下错误:
表达式不能包含lambda表达式.
如果有人能告诉我可能是什么原因?
Blu*_*ueM 59
尚不支持在调试器(监视窗口)中评估Lambda表达式.
这是一个开放的功能要求.
为了调试您的问题,您应该将lambda表达式的结果分配给专用变量,并在以下语句中使用它.
var entity = entityvDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
2014年8月更新: Microsoft发布了功能请求的更新,宣布他们已开始使用它:
所以这就是我们的立场.
- 1)我们希望这和你一样努力.它没有受到审查 - 它正在进行中.
- 2)我们想出了如何使它工作; 它只需要重写 一切.
- 3)我们正在改写一切.
- 4)重写所有内容需要花费大量时间和大量测试.
2014年11月更新: 微软最终在VS2015中实现了一些限制.在这里阅读
| 归档时间: |
|
| 查看次数: |
46556 次 |
| 最近记录: |