Bien que les deux soient techniquement corrects, car ils donneraient tous deux le même résultat dans sa forme simpliste, c'est seulement parce que le comportement par défaut de db.table
est "Select". Dans les coulisses, ils sont différents. Alors que l'un est System.Data.Linq.Table
, l'autre est System.Linq.IQuerable
. Par exemple
var x = db.table ; var y= db.table(s=>s);
X = y;
se traduirait par une erreur du compilateur. Lorsque vous utilisez la bibliothèque Dynamic Linq, lorsque vous devez créer des requêtes dynamiques au moment de l'exécution, vous devez utiliser un IQuerable
comme sélection initiale. Ce qui signifie que var qry = db.table(s=>s);
par opposition à var qry = db.table;
Ensuite, vous pouvez aller et chaîner vos questions comme: qry = qry.Where(bla bla bla);
Je l'ai trouvé à la dure après quelques séances angoissante.
expressions Lambda sont des fonctions anonymes, pas de requêtes. Ils sont utilisés comme des parties de requêtes ... –
Pourquoi des questions comme celles-ci sont-elles dépréciées, alors qu'une simple explication suffira? –
@ Robert Harvey: parce que nous vivons dans un monde d'ennemis –