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!