Heim >Backend-Entwicklung >C++ >Wie verwende ich LINQ GroupBy, Sum und Count richtig, um Produktdaten zu aggregieren?

Wie verwende ich LINQ GroupBy, Sum und Count richtig, um Produktdaten zu aggregieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-24 16:52:16392Durchsuche

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

LINQ: GroupBy, Sum und Count

Das Ziel dieses Codes besteht darin, eine Sammlung von Produkten nach Produktcode zu gruppieren und ein Objekt zurückzugeben, das den Produktnamen, die Produktmenge für jeden Code und den Gesamtpreis jedes Produkts enthält.

Die Beispieldaten enthalten drei Produkte:

<code>{"p1", 6.5, "Product1"}, {"p1", 6.5, "Product1"}, {"p2", 12, "Product2"}</code>

Die erwarteten Ergebnisse sind wie folgt:

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

Der vom Code generierte Zählwert ist jedoch falsch und zeigt immer 1 für jedes Produkt an.

Das Problem besteht darin, dass die SelectMany()-Methode falsch verwendet wird. Der Code sollte die Select()-Methode verwenden, die Ausdrücke vereinfacht:

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

Diese Änderung behebt das Problem und erzeugt den gewünschten Zählwert:

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

Das obige ist der detaillierte Inhalt vonWie verwende ich LINQ GroupBy, Sum und Count richtig, um Produktdaten zu aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn