Je viens de commencer à utiliser des expressions Lambda, et j'aime vraiment le raccourci. J'aime aussi le fait que j'ai une portée dans le lambda de la méthode englobante. Une chose que j'ai du mal à nicher est lambdas. Voici ce que je suis en train de faire:Entity Framework et expressions Lambda imbriquées
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);
}
La deuxième lambda est où je reçois l'erreur de compilation suivante:
Impossible de convertir l'expression Lambda de type « System.ServiceModel.DomainService.Client.LoadBehavior » parce que ce n'est pas un type de délégué
Le compilateur choisit la mauvaise surcharge pour la méthode Load même si j'utilise le même remplacement que j'ai fait dans le précédent Lambda. Est-ce parce que j'essaie d'imbriquer? Ou est-ce que j'ai quelque chose d'autre qui ne va pas?
Merci,
-Scott
Désolé - j'ai trouvé le problème. Cela n'avait rien à voir avec le lambda imbriqué et tout à voir avec des boucles mal formées à l'intérieur de ma Lambda. Cela a rendu intelisense pour devenir fou et signaler une erreur bidon. Tout est bon avec le code ci-dessus. – Scott