LINQ:GroupBy、Sum和Count
这段代码的目标是按产品代码对产品集合进行分组,并返回一个包含产品名称、每个代码的产品数量和每个产品的总价格的对象。
示例数据包含三个产品:
<code>{"p1", 6.5, "Product1"}, {"p1", 6.5, "Product1"}, {"p2", 12, "Product2"}</code>
预期结果如下:
<code>Product1: count 2 - Price:13 (2x6.5) Product2: count 1 - Price:12 (1x12)</code>
但是,代码生成的计数值不正确,每个产品始终显示为1。
问题在于错误地使用了SelectMany()方法。代码应该使用Select()方法,这可以简化表达式:
<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>
此修改更正了该问题并生成了所需的计数值:
<code>Product1: count 2 - Price:13 (2x6.5) Product2: count 1 - Price:12 (1x12)</code>
以上是如何正确使用LINQ GroupBy、Sum和Count来聚合产品数据?的详细内容。更多信息请关注PHP中文网其他相关文章!