Erreur : "Une expression lambda avec un corps d'instruction ne peut pas être convertie en arbre d'expression" lors de l'utilisation d'EntityFramework
Lors de l'utilisation de la méthode Select d'EntityFramework , vous pouvez rencontrer l'erreur : "Une expression lambda avec un corps d'instruction ne peut pas être convertie en arborescence d'expression." Cette erreur se produit souvent lorsque l'expression lambda que vous fournissez contient un corps d'instruction au lieu d'une expression simple.
Comprendre l'erreur :
Dans l'extrait de code fourni :
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; });
L'expression lambda utilise un corps d'instruction pour déclarer et utiliser une variable locale someLocalVar avant de renvoyer une instance d'Obj. Cependant, EntityFramework attend des expressions simples qui peuvent être directement traduites en SQL pour une exécution efficace de la base de données.
Solution :
Pour résoudre cette erreur, simplifiez l'expression lambda en supprimant le corps de la déclaration et en attribuant directement les valeurs :
Arr[] myArray = objects.Select(o => new Obj() { Var1 = o.someVar, Var2 = o.var2 });
Avec cette modification, l'expression lambda ne contient qu'une expression simple qui peut être traduite en un arbre d'expression et le code sera compilé avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!