我刚刚开始使用Lambda表达式,并且非常喜欢快捷方式。我也喜欢这样一个事实,即我在包含方法的lambda中有范围。我遇到麻烦的一件事是嵌套lambda。这是我想要做的:
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
答案 0 :(得分:0)
发现上述评论中描述的问题。我现在回去工作 - 红脸和所有......
答案 1 :(得分:0)
我意识到这不是你想要的答案,但我建议谨慎对待冗长和/或嵌套的lambda。它们可以工作,但是它们经常使代码更难以被其他开发人员读取/维护。我尝试将我的lambdas长度限制为三个语句,没有嵌套。