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:
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.
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.