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中文網其他相關文章!