LINQでのWhere句の代わりにラムダ式を使用するとき
-
20-08-2019 - |
質問
私は本当にLINQに掘りしてきた、と私は、このラムダ式のビジネスをハッシュしようとしています。私は、構文のニュアンスのいくつかの利点を見ていませんよ。主に、ラムダ式が主にWhere句を使用するだけで別の方法であると私には思えます。なぜ私はちょうどそのWhere句を使用していないだろうか?ラムダ式は、より効率的ですか?
C#でより快適に感じるように、別のグループからプログラマを描くだけで、別の構文に加えますか?私はまだにさらされていないラムダ式のため、他のより良いユースケースはありますか?
解決
この記事を見てみましょう: LINQクエリの構文メソッド構文対 のます:
一般的に、我々は、クエリ構文をお勧めします それは通常、より簡単であるため、 読めます。しかし、意味的にはありません メソッドの構文との違い クエリ構文。また、いくつかの こうした取得するものなど、クエリ、 一致する要素の数 条件を指定し、またはそれが取得 最大値を有する要素 ソースシーケンスでは、唯一可能 メソッド呼び出しとして表さ。ザ・ リファレンスドキュメント で標準クエリ演算子 System.Linqの名前空間は、一般的に使用しています メソッドの構文。したがって、場合でも、 、LINQクエリを書き始めたばかり どのように精通していると便利です クエリ内とにメソッド構文を使用します クエリは、自分自身を表現ます。
そしてまた、この質問: LINQ:ドット表記対クエリ式の
他のヒント
このにお読みください。あなたのLINQクエリは、実行時にコンパイラによってラムダ式になってしまいます。
内部的には、コンパイラがより明示的なラムダ構文にクエリ構文を変換します。そこのいずれかのスタイルには固有のパフォーマンスの向上はありませんし、ほとんどのシナリオのために生成されたコードは、人々が手で入力する内容とほとんど同じです。
主な違いは、ラムダ構文で使用すると、任意の拡張メソッドチェーンがオフ動作して戻ってIEnumerable<T>
ことができるということです。クエリ構文を使用すると、明示的に言語でサポートされている特定の拡張メソッドに限定されている(言語間で異なります)。
本当にクエリ構文を使用して使用するかではないことは、本当に個人の好みの問題です。