Saya tahu ini Linq:
var _Results = from item in _List
where item.Value == 1
select item;
Dan saya tahu ini Lambda:
var _Results = _List.Where(x => x.Value == 1);
Catatan Editor: di atas bukan hanya Lambda, ini adalah Linq yang menggunakan "Metode Sintaks" yang predikatnya adalah Lambda. Untuk lebih jelasnya, kedua contoh di atas adalah Linq (posting asli saya salah, tapi saya meninggalkan kesalahan untuk menggambarkan kebingungan yang memicu pertanyaan).
Tetapi apakah Linq merupakan bagian dari Lambda atau apa?
Mengapa ada dua teknisi yang tampaknya identik?
Apakah ada alasan teknis untuk memilih salah satu dari yang lain?
Jawaban:
Ini adalah LINQ (menggunakan sintaks kueri):
Ini juga LINQ (menggunakan sintaks metode):
Menarik untuk dicatat bahwa kedua rasa ini pada akhirnya akan menghasilkan kode yang sama persis. Kompilator menawarkan Anda layanan dengan mengizinkan Anda untuk mengekspresikan keinginan Anda dengan cara yang Anda sukai.
Dan ini lambda:
Saat Anda memilih untuk menggunakan sintaks metode, LINQ hampir selalu terlihat di sekitar ekspresi lambda. Tetapi LINQ dan lambda adalah dua hal yang sangat berbeda, keduanya dapat digunakan sendiri.
Pembaruan: Seperti yang ditunjukkan oleh svick dengan benar, LINQ dengan sintaks kueri juga diimplementasikan menggunakan ekspresi lambda (seperti yang disebutkan sebelumnya, kompiler memungkinkan Anda untuk menulis dalam sintaks kueri tetapi secara efektif mengubahnya menjadi sintaks metode di belakang Anda). Ini hanya menumpuk pada fakta bahwa kedua rasa benar-benar setara dan akan berperilaku dengan cara yang sama (misalnya ekspresi lambda dapat menyebabkan penutupan dibuat).
sumber
Keduanya adalah Linq. Yang kedua menggunakan Lambdas .
Lambdas adalah jenis metode inline hal-hal yang Anda teruskan sebagai parameter ke fungsi Di mana dalam contoh kedua.
Perbedaan antara kedua sintaksis tersebut murni sintaksis. Gaya linq kedua menggunakan panggilan metode adalah cara kerjanya di bawah tenda. Yang pertama dimaksudkan agar lebih ramah pengguna / lebih mudah dan kompilator mengubahnya menjadi pemanggilan metode di belakang layar. Mereka harus bekerja sama untuk setiap query yang diberikan meskipun tentu saja compiler dapat memilih interpretasi yang sangat berbeda dari query linq yang rumit daripada yang Anda lakukan saat mengonversi ke gaya metode.
Artikel msdn ini mungkin menarik juga: LINQ Query Syntax versus Method Syntax . Relevansi khusus adalah: "Secara umum, kami merekomendasikan sintaks kueri karena biasanya lebih sederhana dan lebih mudah dibaca; namun tidak ada perbedaan semantik antara sintaks metode dan sintaks kueri."
sumber