コレクションの操作を実行するには、常にラムダ式が好まれます。しかし、私はラムダ式よりも簡単な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. 代理人(ラムダ式)対インタフェースと抽象クラス
- 5. LINQのデータコンテキストの抽象化
- 6. EF4と複数の抽象レベル
- 7. .net NHibernate Linqラムダ式連鎖
- 8. ラムダ式またはlinqでこれを行うには?
- 9. オブジェクト - CMISモデルマッパー/他のより高いレベルの抽象化を構築する努力はありますか?
- 10. 何プレゼンテーション層または高度に抽象化プレゼンテーション層
- 11. より高いまたは低いレベル?
- 12. ラムダ/矢印関数を使用したTypeScript抽象メソッド
- 13. ラムダ式に含まれていないLINQステートメントへの変換
- 14. 抽象クラスのコンストラクタの使い方は
- 15. 抽象クラスまたはインタフェース。正しい方法は?
- 16. LINQ to SQL:ラムダ式を再利用
- 17. 抽象クラスを持たない抽象メソッド
- 18. Linqラムダ式の中で '新しい'を選択する方法は?
- 19. のLINQ、ラムダ式からリストにキャストする方法
- 20. 抽象クラス対抽象クラス
- 21. Java抽象クラス、抽象コンストラクタ
- 22. LINQでラムダ式を使用したドロップダウンリストの一覧表示
- 23. C#用の抽象度の高い暗号化ライブラリはありますか?
- 24. 遅いラムダ式
- 25. 抽象クラスまたは部分クラス?
- 26. php oopインターフェイスまたは抽象クラス
- 27. 抽象メソッドまたは仮想メソッド?
- 28. のOCaml:高いkinded多型(?モジュールの上に抽象化)
- 29. クラスは抽象宣言または抽象メソッドを実装する必要があります
- 30. ラムダ式を使用したLINQ-to-Entitiesクエリで可能です
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