Maison >développement back-end >C++ >Comment utiliser correctement Linq Groupby, SUM et compter pour agréger les données du produit?

Comment utiliser correctement Linq Groupby, SUM et compter pour agréger les données du produit?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-24 16:52:16337parcourir

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

LINQ : GroupBy, Somme et Compte

Le but de ce code est de regrouper une collection de produits par code produit et de renvoyer un objet contenant le nom du produit, la quantité de produit pour chaque code et le prix total de chaque produit.

Les exemples de données contiennent trois produits :

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

Les résultats attendus sont les suivants :

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

Cependant, la valeur de comptage générée par le code est incorrecte, affichant toujours 1 pour chaque produit.

Le problème est que la méthode SelectMany() est mal utilisée. Le code doit utiliser la méthode Select(), qui simplifie les expressions :

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

Cette modification corrige le problème et produit la valeur de comptage souhaitée :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn