【发布时间】:2010-12-11 04:41:02
【问题描述】:
我刚开始使用 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 中相同的覆盖。
这是因为我想嵌套吗?还是我有其他问题?
谢谢,
-斯科特
【问题讨论】:
-
抱歉 - 我发现了问题。它与嵌套的 lambda 无关,而与我的 Lambda 中格式错误的循环无关。它导致 intelisense 发疯并报告虚假错误。上面的代码一切都很好。