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