L'objet de retour LINQ to SQL implémentait l' IQueryable
interface. Donc, pour le Select
paramètre de prédicat de méthode, vous ne devez fournir qu'une seule expression lambda sans corps.
En effet, le code LINQ pour SQL n'est pas exécuté à l'intérieur du programme plutôt que du côté distant comme le serveur SQL ou d'autres. Ce type d'exécution de chargement paresseux a été obtenu en implémentant IQueryable où son délégué expect est encapsulé dans la classe de type Expression comme ci-dessous.
Expression<Func<TParam,TResult>>
L'arbre d'expression ne prend pas en charge l'expression lambda avec body et sa seule prend en charge l'expression lambda sur une seule ligne comme var id = cols.Select( col => col.id );
Donc, si vous essayez le code suivant ne fonctionnera pas.
Expression<Func<int,int>> function = x => {
return x * 2;
}
Ce qui suit fonctionnera comme prévu.
Expression<Func<int,int>> function = x => x * 2;