开发者

Entity Framework and Nested Lambda Expressions

I've just started using Lambda expressions, and really like the shortcut. I also like the fact that I have scope within the lambda of the encompassing method. One thing I am having trouble with is nesting lambdas. Here is what I am trying to do:

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.HasEr开发者_开发百科ror)
        {
        }

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

     }
                  }, null);
      }, null);


}

The second lambda is where I get the following compile time error:

Cannot convert Lambda expression to type 'System.ServiceModel.DomainService.Client.LoadBehavior' because it is not a delegate type

The compiler is choosing the wrong overload for the Load method even though I am using the same override I did in the previous Lambda.

Is this because I am trying to nest? Or do I have something else wrong?

Thanks,

-Scott


Found the problem as described in my comment above. I'll head back to work now - red face and all....


I realize this is not the answer you want, but I suggest caution about lengthy and/or nested lambdas. They work, but they often make code harder to read / maintain by other developers. I try to limit my lambdas in length to three statements, with no nesting.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜