J'ai la fonction de liaison suivante
MyLinqToSQLTable.Where(x => { x.objectID == paramObjectID; }).ToList();
3 Réponses :
Votre première requête est équivalente à celle-ci: vous manque au mot La spécification définit formellement lambda-expression em> dans la grammaire comme: p> lambda-expression em>: corps anonyme-corps em>: L'ancien cas ( expression em>) s'applique lorsque le corps ne commence pas par une attelle bouclée gauche. Ce dernier cas ( bloc em>) est défini comme une série de déclarations (comme un organisme de méthode). Comme d'autres endroits en C #, des déclarations d'expression dans un bloc sont limitées aux déclarations, aux missions, à l'appel de fonctions, à l'incrément et à décrémenter. Simplement appliquer l'opérateur Le problème est le retour implicite qui était là quand je viens de faire un comparateur booléen n'est maintenant pas fait. Retour (x.objectid == paramobjectid); n'est pas accepté non plus. p>
blockquote> bien sûr, le retour code> key ici. Il est nécessaire que le corps de la Lambda est un bloc explicite plutôt qu'une expression. P>
      fonction anonyme-signature em> => corps-fonction anonyme em> p>
    expression em>
    bloc em> p>
blockQuote> == code> à un couple identifiant n'est pas l'expression d'une instruction valide. Le deuxième problème est que lorsque le type de retour d'une méthode (anonyme ou non) n'est pas
vide code>, tous les chemins de code atteignant la fin du bloc doivent renvoyer une valeur. Par conséquent, même si le corps de votre Lambda était syntaxiquement, sans déclaration de retour, votre Lambda serait convertible vers
action
func
où code> méthode attend. p>
mise à jour: h3>
x => {retour x.Objectid == paramobjectid; } Code> La variante de votre expression Lambda est uniquement possible em> quand elle est censée être convertie en une méthode
expression
où code> prend
func
où code> prend
expression
+1 Pour indiquer qu'un Lambda multiligne ne peut pas être utilisé dans LINQ vers SQL ou EF, car il n'est pas convertible à un arbre d'expression.
Est-ce que cela fonctionne?
MyLinqToSQLTable.Where(x => { return x.objectID == paramObjectID; }).ToList();
MyLinqToSQLTable.Where(x => { return x.objectID == paramObjectID; }).ToList(); or MyLinqToSQLTable.Where(x => { return x.objectID == paramObjectID; }).ToArray();
Il y a déjà deux autres réponses disant la même chose. Cette réponse n'ajoute aucune valeur que ce soit.