Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara menggunakan Linq's Groupby, Sum, dan Hitung untuk mengagregatkan data produk?

Bagaimana cara menggunakan Linq's Groupby, Sum, dan Hitung untuk mengagregatkan data produk?

Linda Hamilton
Lepaskan: 2025-01-24 16:56:13
asal
287 orang telah melayarinya

How to Correctly Use LINQ's GroupBy, Sum, and Count to Aggregate Product Data?

linq: groupby, sum, dan count

Penerangan Masalah

Anda mempunyai satu set data produk yang perlu dibungkus mengikut kod produk. Untuk setiap kod, anda ingin mengembalikan objek yang termasuk nama produk, kuantiti produk dan jumlah harga. Anda menggunakan Fungsi GroupBy dan SelectMany Linq untuk mencapai matlamat ini, tetapi sifat -sifat kuantitatif dalam objek hasilnya selalu 1.

penyelesaian

Masalahnya ialah fungsi SelectMany digunakan untuk mengendalikan setiap item dalam setiap kumpulan. Untuk menyelesaikan masalah ini, gunakan Pilih sebaliknya.

alternatif

<code class="language-csharp">List<resultline> result = Lines
    .GroupBy(l => l.ProductCode)
    .Select(cl => new ResultLine
    {
        ProductName = cl.First().Name,
        Quantity = cl.Count().ToString(),
        Price = cl.Sum(c => c.Price).ToString(),
    })
    .ToList();</code>
Salin selepas log masuk
atau, anda boleh mengumpulkan nama produk dan kod produk pada masa yang sama. Ini boleh dijana dalam EF untuk menjana SQL yang lebih baik:

Jenis data yang lebih baik

Pertimbangkan perubahan kuantiti dan sifat harga kepada int dan perpuluhan, kerana ini dapat mencerminkan sifat nilai -nilai ini dengan lebih baik.
<code class="language-csharp">List<resultline> result = Lines
    .GroupBy(l => new { l.ProductCode, l.Name })
    .Select(cl => new ResultLine
    {
        ProductName = cl.First().Name,
        Quantity = cl.Count().ToString(),
        Price = cl.Sum(c => c.Price).ToString(),
    })
    .ToList();</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana cara menggunakan Linq's Groupby, Sum, dan Hitung untuk mengagregatkan data produk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan