Kenyataan KES dalam LINQ: pemahaman dan pelaksanaan
Pernyataan CASE dalam LINQ membolehkan pembangun menilai berbilang keadaan dan menetapkan nilai tertentu berdasarkan keputusan. Ia biasanya digunakan untuk transformasi dan manipulasi data.
Tukar penyata CASE kompleks kepada LINQ
Mari kita pertimbangkan pernyataan KES yang disediakan dalam soalan asal:
<code class="language-sql">osc_products.products_quantity = CASE WHEN itempromoflag <> 'N' THEN 100000 WHEN itemcat1 IN ('1','2','31') AND itemsalestatus = 'S' THEN 100000 WHEN itemsalestatus = 'O' THEN 0 ELSE cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted END </code>
Pernyataan ini memberikan nilai khusus kepada medan produk_kuantiti jadual osc_products berdasarkan pelbagai syarat. Untuk menukarnya kepada LINQ kita boleh menggunakan sintaks berikut:
<code class="language-csharp">var productsQuantity = osc_products .Select(x => new { x.products_quantity, ItemPromoFlag = x.itempromoflag != "N", ItemCategory1 = new[] { "1", "2", "31" }.Contains(x.itemcat1), ItemSaleStatus = x.itemsalestatus == "S", AvailableQuantity = x.itemqtyonhand - x.itemqtycommitted }) .Select(x => x.products_quantity = x.ItemPromoFlag ? 100000 : (x.ItemCategory1 && x.ItemSaleStatus) ? 100000 : x.itemsalestatus == "O" ? 0 : x.AvailableQuantity );</code>
Memahami penukaran LINQ
Pernyataan LINQ ini memaparkan jenis tanpa nama baharu yang mengandungi medan products_quantity sedia ada dan sifat tambahan yang memegang nilai boolean bagi ungkapan bersyarat. Ia kemudian menggunakan operasi Pilih bersarang untuk menetapkan nilai kuantiti_produk yang dikira secara bersyarat.
Contoh penyata KES mudah
Contoh kod yang disediakan untuk menukar pernyataan CASE mudah kepada LINQ menunjukkan penggunaan ungkapan ternary dalam klausa Pilih:
<code class="language-csharp">Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 }; var numberText = ( from n in numbers where n > 0 select new { Number = n, Text = n == 1 ? "One" : n == 2 ? "Two" : n == 3 ? "Three" : "Unknown" } );</code>
Pernyataan ini menggunakan ungkapan ternary untuk menetapkan nilai teks yang berbeza kepada nombor berdasarkan nilainya. Sintaks ungkapan ternary ialah:
<code class="language-csharp">condition ? true_expression : false_expression</code>
Contoh ini menggambarkan cara menukar penyata CASE kepada LINQ, menyediakan cara yang ringkas dan mudah diselenggara untuk menilai keadaan dan memberikan nilai kepada data anda.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Penyata SQL CASE kepada Pertanyaan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!