Я только что начал использовать выражения лямбда, и мне очень нравится ярлык. Мне также нравится тот факт, что у меня есть область действия внутри лямбда всеобъемлющего метода. У меня есть проблемы с гнездом лямбда. Вот то, что я пытаюсь сделать:Entity Framework и вложенные выражения лямбда
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);
}
Второй лямбда, где я получаю следующую ошибку компиляции времени:
Невозможно преобразовать лямбда-выражения к типу «System.ServiceModel.DomainService.Client.LoadBehavior» потому что это не тип делегата
Компилятор выбирает неправильную перегрузку для метода Load, хотя я использую ту же самую переопределение, что и в предыдущей лямбда.
Это потому, что я пытаюсь гнездиться? Или у меня что-то еще не так?
Спасибо,
-Скотт
Извините, я нашел проблему. Это не имело ничего общего с вложенной лямбдой и все, что связано с плохо сформированными петлями внутри моей лямбды. Это заставило intelisense сойти с ума и сообщить фальшивую ошибку. Все хорошо с кодом выше. – Scott