Heim >Backend-Entwicklung >C++ >Wie verwendete ich die Gruppen-, Summen- und Zählung von LINQ korrekt, um Produktdaten zu aggregieren?

Wie verwendete ich die Gruppen-, Summen- und Zählung von LINQ korrekt, um Produktdaten zu aggregieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-24 16:56:13289Durchsuche

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

lINQ: GroupBy, Sum und Count

Problembeschreibung

Sie haben eine Reihe von Produktdaten, die gemäß dem Produktcode gepackt werden müssen. Für jeden Code möchten Sie ein Objekt zurückgeben, das den Produktnamen, die Produktmenge und den Gesamtpreis enthält. Sie verwenden die Gruppen- und SelectMany -Funktionen von Linq, um dieses Ziel zu erreichen, aber die quantitativen Attribute in den Ergebnisobjekten sind immer 1.

Lösung

Das Problem ist, dass die SelectMany -Funktion verwendet wird, um jedes Element in jeder Gruppe zu verarbeiten. Um dieses Problem zu lösen, verwenden Sie stattdessen ausgewählte.

Alternativ

<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>
oder Sie können den Produktnamen und den Produktcode gleichzeitig gruppieren. Dies kann in EF generiert werden, um bessere SQL:

zu generieren Verbesserter Datentyp

Betrachten Sie die Änderung der Menge und der Preisattribute in INT bzw. Dezimal, da dies die Art dieser Werte besser widerspiegeln kann.
<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>

Das obige ist der detaillierte Inhalt vonWie verwendete ich die Gruppen-, Summen- und Zählung von LINQ korrekt, 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