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
Linda Hamiltonasal
2025-01-24 16:52:16396semak imbas

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>

Keputusan yang dijangkakan adalah seperti berikut:

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

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>

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>

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!

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