Entity framework 实体框架和嵌套Lambda表达式

Entity framework 实体框架和嵌套Lambda表达式,entity-framework,lambda,Entity Framework,Lambda,我刚刚开始使用Lambda表达式,非常喜欢这个快捷方式。我还喜欢这样一个事实,即我在包含方法的lambda中拥有范围。有一件事我遇到了麻烦是筑巢lambdas。以下是我试图做的: public void DoSomeWork() { MyContext context = new MyDomainContext(); context.GetDocumentTypeCount(ci.CustomerId, io => { if (io.HasError) {

我刚刚开始使用Lambda表达式,非常喜欢这个快捷方式。我还喜欢这样一个事实,即我在包含方法的lambda中拥有范围。有一件事我遇到了麻烦是筑巢lambdas。以下是我试图做的:

public void DoSomeWork()
{
  MyContext context = new MyDomainContext();
  context.GetDocumentTypeCount(ci.CustomerId, io =>
  {
    if (io.HasError)
    {
       // Handle error
    }
    // Do some work here
    //         ...        
    // make DB call to get data
    EntityQuery<AppliedGlobalFilter> query =
      from a in context.GetAppliedGlobalFiltersQuery()
      where a.CustomerId == ci.CustomerId && a.FilterId == 1
      select a;

    context.Load<AppliedGlobalFilter>(query, lo =>
      {
        if (lo.HasError)
        {
        }

         **// Do more work in this nested lambda.  
         // Get compile time error here**

     }
                  }, null);
      }, null);


}
第二个lambda是我得到以下编译时错误的地方:

无法将Lambda表达式转换为类型“System.ServiceModel.DomainService.Client.LoadBehavior”,因为它不是委托类型

编译器为Load方法选择了错误的重载,即使我使用的覆盖与我在前面的Lambda中使用的相同

这是因为我想筑巢吗?还是我出了什么问题

谢谢


-Scott发现了我在上面的评论中描述的问题。我现在要回去工作了-红脸和所有…

我知道这不是你想要的答案,但我建议你注意过长和/或嵌套的lambda。它们可以工作,但通常会使代码更难被其他开发人员读取/维护。我尝试将lambda的长度限制为三条语句,没有嵌套。

对不起,我发现了这个问题。它与嵌套的lambda无关,而与lambda中格式不良的循环有关。这导致Intelissense发疯并报告了一个虚假错误。以上代码都很好。