Entity framework 实体框架和嵌套Lambda表达式
我刚刚开始使用Lambda表达式,非常喜欢这个快捷方式。我还喜欢这样一个事实,即我在包含方法的lambda中拥有范围。有一件事我遇到了麻烦是筑巢lambdas。以下是我试图做的: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) {
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发疯并报告了一个虚假错误。以上代码都很好。