問題の説明
製品コードに従ってグループ化する必要がある製品コレクションがあります。目標は、オブジェクト、製品名、製品の数、および各製品コードの合計価格を作成することです。コードフラグメント(エラー例)
初期コードは、
を使用して製品コードに従ってグループ化し、各グループの合計を計算します。問題はこのコードは正しく計算されますが、すべての製品のカウントは常に1として表示されます。
GroupBy
例データの例
<code class="language-csharp">List<resultline> result = Lines .GroupBy(l => l.ProductCode) .SelectMany(cl => cl.Select( csLine => new ResultLine { ProductName = csLine.Name, Quantity = cl.Count().ToString(), Price = cl.Sum(c => c.Price).ToString(), })).ToList<resultline>();</code>
予想される結果
solution
問題は、各グループの各プロジェクトを確認するために
の使用にあります。 正しいアプローチは次のとおりです<code class="language-csharp">List<cartline> Lines = new List<cartline>(); Lines.Add(new CartLine() { ProductCode = "p1", Price = 6.5M, Name = "Product1" }); Lines.Add(new CartLine() { ProductCode = "p1", Price = 6.5M, Name = "Product1" }); Lines.Add(new CartLine() { ProductCode = "p2", Price = 12M, Name = "Product2" });</code>
同じコードを持つ製品の名前が同じであると仮定します。を使用して製品名を取得できます。 展示は結果セットをセットし、エラーをカウントし、
はグループ化後に結果を直接操作します。<code>Product1: count 2 - Price:13 (2x6.5) Product2: count 1 - Price:12 (1x12)</code>
この復活は、画像を維持し、LINQの問題と解決策をより正確で簡潔な説明を提供します
以上がGroupByでLINQの製品を正しくグループ化、合計、およびカウントする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。