Rumah > pembangunan bahagian belakang > C++ > Bagaimana Menggunakan LINQ GroupBy, Sum, dan Count dengan Betul untuk Mengagregatkan Data Produk?

Bagaimana Menggunakan LINQ GroupBy, Sum, dan Count dengan Betul untuk Mengagregatkan Data Produk?

Linda Hamilton
Lepaskan: 2025-01-24 16:52:16
asal
391 orang telah melayarinya

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

LINQ: GroupBy, Jumlah dan Kira

Matlamat kod ini adalah untuk mengumpulkan koleksi produk mengikut kod produk dan mengembalikan objek yang mengandungi nama produk, kuantiti produk untuk setiap kod dan jumlah harga setiap produk.

Data sampel mengandungi tiga produk:

<code>{"p1", 6.5, "Product1"}, {"p1", 6.5, "Product1"}, {"p2", 12, "Product2"}</code>
Salin selepas log masuk

Keputusan yang dijangkakan adalah seperti berikut:

<code>Product1: count 2   - Price:13 (2x6.5)
Product2: count 1   - Price:12 (1x12)</code>
Salin selepas log masuk
Salin selepas log masuk

Walau bagaimanapun, nilai kiraan yang dijana oleh kod adalah tidak betul, sentiasa menunjukkan 1 untuk setiap produk.

Masalahnya ialah kaedah SelectMany() digunakan secara tidak betul. Kod harus menggunakan kaedah Select(), yang memudahkan ungkapan:

<code>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

Pengubahsuaian ini membetulkan masalah dan menghasilkan nilai kiraan yang diingini:

<code>Product1: count 2   - Price:13 (2x6.5)
Product2: count 1   - Price:12 (1x12)</code>
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Menggunakan LINQ GroupBy, Sum, dan Count dengan Betul 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