コレクションの操作を実行するには、常にラムダ式が好まれます。しかし、私はラムダ式よりも簡単なLINQで同じことを達成することができます。しかし、私はまだ抽象レベル&でトップに来ていることについて少し混乱しています?抽象レベルLinqまたはラムダ式の方が高い
答えて
私は「LINQ」あなたは意味「クエリ式」で疑う:
var query = from x in y
where x.Foo
select x.Bar
そして、私はあなたが直接拡張メソッドを呼び出すことを意味し、「ラムダ式」で疑う:
var query = y.Where(x => x.Foo)
.Select(x => x.Bar);
これらの両方実際には LINQ ...
クエリの式は、少し a実際の操作に落とすためにはもっと多くの作業が必要ですが、変換処理がかなり機械的であることを考えると、それほど大きくはありません。
+1私は質問を理解することができなかったので...しかし、応答は非常に明確でした:-) – xanatos
+1は、両方ともLINQと呼ばれています。多くの人々がこれを理解していないことは悲しい。 –
@ハサン:両方とも* LINQと呼ばれているわけではありません。どちらのアプローチもLINQの一部です。 LINQをどちらの方法で使用していても、実際には同じコードが生成されています。 –
LINQ式は、コンパイラによって対応する拡張メソッドに変換されます。ラムダ式はBCLの一部ですが、LINQ構文はコンパイラによって変換される文法的な砂糖だけですが、発行されたILの一部ではありません。
私は立っていませんlist.SelectはLINQではありません –
Nickpick:ラムダ式はコンパイラの砂糖だけではありませんか?匿名メソッドまたは式ツリーに変換されますが、存在しません – LukeH
私はあなたの質問は、クエリ構文(carList select car.Brandのcarから)とメソッド構文(carList.Select(car => car.Brand))のLinqの違いについて実際には推測していますか? その場合、簡単に答えられます:Linqのクエリ構文は構文的な砂糖だけであり、メソッド呼び出しに変換されます。そのため、抽象度が上がるまではまったく同じです。クエリ構文は、平均的な人間にはもっと分かりやすいように見えます。
メノ
- 1. 抽象クラスのラムダ式
- 2. Linqクエリまたはラムダ式?
- 3. Linq、ラムダ式
- 4. linqラムダ式のステートメント
- 5. LINQのデータコンテキストの抽象化
- 6. 抽象クラスメンバーは保護レベルのためにアクセスできない
- 7. foreachをlinqクエリまたはラムダ式に変換する方法
- 8. 代理人(ラムダ式)対インタフェースと抽象クラス
- 9. SqlはLinqラムダ式にあります
- 10. LINQラムダ式の条件
- 11. 低レベル抽象化の理解
- 12. EF4と複数の抽象レベル
- 13. OR foreach looped linqラムダ式
- 14. .net NHibernate Linqラムダ式連鎖
- 15. ラムダ式またはlinqでこれを行うには?
- 16. LINQクエリOrderByDambling式がラムダ式を認識しない
- 17. オブジェクト - CMISモデルマッパー/他のより高いレベルの抽象化を構築する努力はありますか?
- 18. 何プレゼンテーション層または高度に抽象化プレゼンテーション層
- 19. 抽象レコードまたはレコードインターフェイス?
- 20. より高いまたは低いレベル?
- 21. ラムダ式に含まれていないLINQステートメントへの変換
- 22. 子 - 親SQLクエリをlinqまたはラムダ式に変換する方法
- 23. このLINQクエリをラムダ式で書き換える方法は?
- 24. LINQラムダ式のヘルプを探す
- 25. ラムダ/矢印関数を使用したTypeScript抽象メソッド
- 26. 抽象クラスのコンストラクタの使い方は
- 27. 抽象クラスまたはインタフェース。正しい方法は?
- 28. LINQ to SQL:ラムダ式を再利用
- 29. 2レベル抽象クラス階層「一貫した方法分解能」エラーなし
- 30. ラムダ式の方が遅いですか?
http://stackoverflow.com/questions/7391370/is-it-linq-or-lambda/7391389#7391389とhttp://stackoverflow.com/questions/5327897/difference-between- linq-queries-lambda-expression/5327982#5327982 LINQクエリを使用すると、コードがシンプルで読みやすくなります。彼らがいないところでそれらを使用しないでください。コンパイラはラムダ式と同じものを扱います。 –
より抽象度の高いもの(何を意味するものであれ)ではなく、より便利なものを使用してください。 – Vlad