Unterschied zwischen LINQ-Abfragen und Lambda-Ausdruck

8

Warum sollte man bei LINQ-Abfragen einen Lambda-Ausdruck verwenden, um die Länge des Codes zu verkürzen, die Entwicklungsgeschwindigkeit zu erhöhen oder gibt es einen anderen Grund, der nur durch Lambda-Ausdruck & amp; nicht durch LINQ-Abfragen.

    
Tuscan 16.03.2011, 15:51
quelle

2 Antworten

21

Abfrageausdrücke decken nur eine kleine Teilmenge der LINQ-Operatoren ab und sind nur anwendbar, wenn Sie den tatsächlichen Ausdruck zur Hand haben, anstatt (zum Beispiel) ein Func<T, bool> als Prädikat zu haben. In diesem Fall werden die Dinge hässlich. Also anstatt zu schreiben:

%Vor%

Ich würde viel lieber schreiben:

%Vor%

Es gibt verschiedene andere Fälle, in denen die Verwendung der Nicht-Abfrage-Ausdruckssyntax einfacher ist, insbesondere wenn Ihre Abfrage nur einen einzigen Operator verwendet.

Abfrageausdrücke werden effektiv in Nicht-Abfrageausdrücke übersetzt. Alles was Sie in Abfrageausdrücken tun können kann in Nicht-Abfrageausdrücken ausgedrückt werden. Verwenden Sie Abfrageausdrücke, um den Code einfacher und lesbarer zu machen. benutze sie nicht dort, wo sie nicht sind.

Ich habe mehr Informationen darüber, wie Query-Ausdrücke in einem Blogpost , an dem Sie interessiert sein könnten.

    
Jon Skeet 16.03.2011, 15:56
quelle
3
  

irgendeinen anderen Grund, der nur durch Lambda-Ausdruck & amp; nicht durch LINQ-Abfragen.

Es gibt einige LINQ-Erweiterungsmethoden, die keine Entsprechungen in LINQ-Abfrageausdrücken haben erfordert die Verwendung von Lambda Expressions. Ein gutes Beispiel ist Enumerable.ToLookup - wenn Sie ein ILookup, Sie müssen Lambdas verwenden, um dies zu generieren.

    
Reed Copsey 16.03.2011 15:57
quelle

Tags und Links