表达式不能包含lambda表达式

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中实现了一些限制.在这里阅读

  • Microsoft,处理现有语言功能的IDE工具被认为是额外的. (11认同)
  • 现在,Visual Studio 2015中包含对调试lambda表达式的支持.干杯.http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/support-for-debugging-lambda-expressions-with-visual-studio-2015.aspx (4认同)
  • 问题仍然在VS 2017上! (4认同)
  • @KhadimAli我有Visual Studio 2015,现在,在2017年,我仍然看到此消息。是否需要某种非自动更新或需要切换的设置标志? (2认同)