Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara kumpulan data dengan pelbagai lajur di Linq?

Bagaimana cara kumpulan data dengan pelbagai lajur di Linq?

DDD
DDDasal
2025-01-31 15:31:09286semak imbas

How to Group Data by Multiple Columns in LINQ?

linq pelbagai kumpulan kumpulan secara terperinci

Dalam SQL, anda boleh menggunakan klausa

untuk kumpulan data berdasarkan pelbagai lajur. Contohnya:

GROUP BY Bagaimana untuk melaksanakan fungsi serupa di Linq?

<code class="language-sql">SELECT * FROM <tablename> GROUP BY <column1>,<column2></code>
Gunakan jenis tanpa nama

Satu kaedah adalah menggunakan jenis tanpa nama. Berikut adalah contoh:

Kod ini dikelompokkan berdasarkan atribut

dan

unsur -unsur dalam urutan
<code class="language-csharp">var groupedData = x.GroupBy(x => new { x.Column1, x.Column2 });</code>
untuk membuat jenis tanpa nama untuk setiap gabungan nilai yang unik.

x Contoh data Column1 Column2

Pertimbangkan struktur data berikut:

dan pernyataan sisipan berikut:

anda boleh menggunakan kod berikut untuk menukar ini ke linq:
<code class="language-csharp">public class QuantityBreakdown
{
    public int MaterialID { get; set; }
    public int ProductID { get; set; }
    public float Quantity { get; set; }
}</code>

Ekspresi LINQ ini dibayar mengikut
<code class="language-sql">INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID</code>
dan

, dan kemudian mengira jumlah nilai

setiap kumpulan.
<code class="language-csharp">var groupedTransactions = transactions
    .GroupBy(t => new { t.MaterialID, t.ProductID })
    .Select(g => new QuantityBreakdown
    {
        MaterialID = g.Key.MaterialID,
        ProductID = g.Key.ProductID,
        Quantity = g.Sum(t => t.Quantity)
    });</code>

Atas ialah kandungan terperinci Bagaimana cara kumpulan data dengan pelbagai lajur di Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn