2009-06-28 5 views
6

J'ai vraiment cherché dans LINQ, et j'essaie d'éliminer cette expression de lambda. Je ne vois tout simplement pas le bénéfice de certaines des nuances de la syntaxe. Principalement, il me semble qu'une expression lambda est principalement une manière différente d'utiliser une clause Where. Pourquoi n'utiliserais-je pas une clause Where alors? L'expression de lambda est-elle plus efficace?Quand utiliser des expressions lambda à la place d'une clause Where dans LINQ

Est-ce simplement une autre addition syntaxique pour attirer les programmeurs d'un autre groupe à se sentir plus à l'aise en C#? Y a-t-il d'autres meilleurs cas d'utilisation pour les expressions lambda que je n'ai pas encore exposées?

+0

Lisez ceci avant de poser une telle question. :) http://books.google.lv/books?id=12HliU9_D_kC&dq=pro+linq&printsec=frontcover&source=bn&hl=lv&ei=YXZHSumhH4nz_AbAtY2GCQ&sa=X&oi=book_result&ct=result&resnum=6 –

Répondre

9

Jetez un oeil à cet article: LINQ Query Syntax versus Method Syntax :

En général, nous recommandons la syntaxe de requête car il est généralement plus simple et plus lisible ; cependant, il n'y a pas de différence sémantique entre la syntaxe de la méthode et la syntaxe de requête . En outre, certaines requêtes, telles que celles qui extraient le nombre d'éléments qui correspondent à une condition spécifiée , ou qui extraient l'élément qui a la valeur maximale dans une séquence source, ne peut être exprimé en appels de méthode. La documentation de référence pour les opérateurs de requête standard dans l'espace de noms System.Linq utilise généralement la syntaxe de méthode . Par conséquent, même lorsque commence à écrire des requêtes LINQ, , il est utile de se familiariser avec la manière dont utilise la syntaxe de méthode dans les requêtes et dans les expressions de requête elles-mêmes.

Et aussi cette question: LINQ: Dot Notation vs Query Expression

+0

Merde, vous me battez avec le lien! :) –

1

Lire this. Vos requêtes LINQ seront transformées en expressions Lambda par le compilateur lors de l'exécution.

1

En interne, le compilateur traduira la syntaxe de la requête dans la syntaxe lambda plus explicite. Il n'y a aucun gain de performance inhérent à l'un ou l'autre style et le code généré pour la plupart des scénarios est presque identique à ce que les gens tapent à la main.

La principale différence est qu'avec la syntaxe lambda vous pouvez enchaîner n'importe quelle méthode d'extension fonctionnant à l'arrêt et à l'état retourné et IEnumerable<T>. Avec la syntaxe de la requête, vous êtes limité aux méthodes d'extension spécifiques explicitement supportées par le langage (varie d'une langue à l'autre)

L'utilisation réelle ou non de la syntaxe de requête dépend en fait de vos préférences personnelles.

0
+0

S'il vous plaît, pouvez-vous élaborer? – menjaraz

+0

Voici un exemple de la façon dont vous pouvez joindre une séquence en utilisant Lambda et les expressions de requête: –

+1

[Les réponses composées d'un simple lien ne sont pas considérées utiles] (http://meta.stackexchange.com/questions/8231/are-answers-that -just-contenir-links-ailleurs-vraiment-good-answers). Vous voudrez peut-être modifier votre réponse pour inclure les parties pertinentes du document lié, afin que ce soit * ici *, sur le même site que la question. – AakashM

Questions connexes