.NET LINQ クエリ構文とメソッド チェーン 質問する

.NET LINQ クエリ構文とメソッド チェーン 質問する

次の 2 つのステートメントにはパフォーマンスの違いがありますか?

from item in collection 
where item.id == 3
select item

そして

collection.Where(item => item.id ==3)

一般的に、LINQ 構文とメソッド チェーンの間にパフォーマンスの違いはありますか?

ベストアンサー1

いいえ、コンパイルされているのでその通り同じコード。

基本的に、クエリ式はコンパイラによって「クエリ式のない C# 3」に「前処理」され、その後、オーバーロード、ラムダ式の変換などのルールが通常どおり適用されます。これは非常にエレガントなシステムであり、クエリ式のルールは仕様のほんの一部に限定されます。

もちろん、「チェーン メソッド」構文で記述できる内容はさまざまですが、他のオーバーロードを使用しているか、メソッドがサポートされていない (例Count()) などの理由で、クエリ式構文では記述できません。ただし、それらを使用していない限り、コンパイルされたコードはまったく同じになります。特定のシナリオに対して最も読みやすい代替方法を選択してください。

おすすめ記事