List<int> result1 =
(from number in list where number < 3 select number).ToList();
List<int> result2 = list.Where(n => n<3).ToList();
これら2つの異なるステートメントの違いは何ですか?これら2つのステートメントの違いは何ですか?
List<int> result1 =
(from number in list where number < 3 select number).ToList();
List<int> result2 = list.Where(n => n<3).ToList();
これら2つの異なるステートメントの違いは何ですか?これら2つのステートメントの違いは何ですか?
最初の表記法は通常「クエリ構文」と呼ばれ、2番目の「メソッド構文」(またはドット表記法、またはラムダ構文)は両方ともまったく同じコードにコンパイルされますが、 2つはより簡潔ですが、ほとんどのシナリオではこれがドット表記ですが、特に複数の列挙型に参加またはグループ化すると、クエリ構文が本当に輝きます。
またLINQ Query Syntax versus Method Syntax (C#)をチェックアウト:入門LINQ ドキュメントの
ほとんどのクエリは、C#3.0で導入された宣言型 クエリ構文を使用してクエリ 式として書かれています。 ただし、.NET共通言語 ランタイム(CLR)には、クエリ の構文自体はありません。したがって、 コンパイル時に、クエリの式は で、CLR が理解できるものに変換されます。メソッド呼び出し。これらの メソッドは、標準クエリ 演算子と呼ばれ、 などの名前を持ちます。Select、GroupBy、Join、Max、 Averageなどです。クエリ構文の代わりにメソッド構文 を使用して直接 と呼び出すことができます。
通常、クエリ構文 を使用することをお勧めします。これは通常、より簡単であり、より多くのユーザーが読むことができるためです。 読み取り可能です。しかし、メソッド構文と クエリ構文の間には意味がありません。
何もありません。
最初のものはLINQ表記を使用し、2番目のものは拡張メソッド表記を使用します。どちらも同じことを行います。
もっと気に入ってください。 :)
違いはありません。 1つは、同じ結果を得るために代理人を使用するのではなく、SQLに似た言語拡張です。
すでに最初のものはLINQ表記であり、2番目のものはlambdaの拡張メソッドを使用しています。コード保守を少なくするには秒を使用します。内部コードやパフォーマンスの類似点を考えている場合は、ストップウォッチを使用してこのコードを100000回実行し、最速のコードを選択してください。コンパイルされたコードが似ていれば、ほぼ同じ時間が得られます。