Pertanyaan LINQ: Perbandingan sintaks fasih dan ungkapan pertanyaan
LINQ menyediakan dua kaedah pertanyaan: sintaks fasih dan sintaks ungkapan pertanyaan. Kedua-duanya boleh melaksanakan operasi pertanyaan, tetapi mereka berbeza dalam senario yang berkenaan.
Sintaks Fasih
Sintaks fasih adalah serupa dengan C#, menggunakan rantai kaedah untuk membina pertanyaan. Untuk pertanyaan mudah, ia biasanya lebih ringkas dan mempunyai akses kepada semua pengendali pertanyaan.
Sintaks Ungkapan Pertanyaan
Sintaks ungkapan pertanyaan adalah serupa dengan SQL, menjadikannya lebih mudah dibaca dan digunakan. Ia berfungsi dengan baik dalam senario yang memerlukan berbilang pembolehubah berskop, seperti menggunakan kata kunci "biar", berbilang penjana atau pertanyaan sertai.
Contoh: berbilang pembolehubah skop
Berikut ialah contoh menggunakan sintaks ungkapan pertanyaan:
<code class="language-csharp">from fullName in fullNames from name in fullName.Split() orderby fullName, name select name + " came from " + fullName;</code>
Untuk menggunakan sintaks yang lancar, anda perlu menulis seperti ini:
<code class="language-csharp">fullNames .SelectMany(fName => fName.Split().Select(name => new { name, fName })) .OrderBy(x => x.fName) .ThenBy(x => x.name) .Select(x => x.name + " came from " + x.fName);</code>
Jelas sekali, sintaks ungkapan pertanyaan lebih bersih dan lebih mudah difahami dalam kes di mana berbilang pembolehubah skop terlibat.
Campurkan
Untuk menggabungkan kelebihan kedua-dua sintaks, ia boleh dicampur dalam pertanyaan LINQ. Contohnya:
<code class="language-csharp">var query = from c in db.Customers let totalSpend = c.Purchases.Sum(p => p.Price) // 此处使用方法语法 where totalSpend > 1000 from p in c.Purchases select new { p.Description, totalSpend, c.Address.State };</code>
Contoh ini menggunakan sintaks kaedah dalam operasi "Jumlah" sambil mengekalkan kebolehbacaan sintaks ungkapan pertanyaan dalam pertanyaan keseluruhan. Sintaks yang hendak dipilih bergantung pada senario tertentu dan keutamaan peribadi Penggunaan fleksibel kedua-dua sintaks boleh meningkatkan kebolehbacaan dan kecekapan kod.
Atas ialah kandungan terperinci Sintaks fasih vs ekspresi pertanyaan di LINQ: Bilakah saya harus menggunakan yang mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!