2016-04-26 16 views
1

モデルによって定義されたオブジェクトのリストがあり、特定のフィールドでグループ化したい。グループ化すると、いくつかのフィールドを合計する必要があります。私はItemNameでグループ化し、Amountはすべて一緒に集計されます。モデルによるグループ化と選択

私のモデルは次のとおりです。

public class Item{ 
    public string ItemName { get; set; } 
    public string ItemColor { get; set; } 
    public string SomethingElse { get; set; } 
    public decimal Amount { get; set; } 
} 

私の現在の試みは、次のとおりです。

List<Item> fullListOfItems = GetItemsFromDatabase(); 

List<Item> groupedList = fullListOfItems 
         .GroupBy(l => l.ItemName) 
         .Select(i => 
          new Item() 
          { 
           ItemName = i.Key.ItemName, 
           ItemColor = i.Key.ItemColor, 
           SomethingElse = i.Key.SomethingElse, 
           Amount = i.Sum(k=>k.Amount) 
          } 
         ); 

私はグループ化モデルはItemNameのための定義のそれぞれで独立し含まれていないことを言って、各キーの文の後にエラーを取得しています。

ご協力いただければ幸いです。ありがとう。

+0

使用しているリストに 'using System.Linq'が含まれていることを確認してください。 –

+0

これを既に持っています – JoeFromAccounting

答えて

3

あなたのコードを使用すると、項目のリストを持っていて、一つの値を選択する必要が代わりにi.Key.ItemColorのこの

List<Item> groupedList = fullListOfItems 
          .GroupBy(l => l.ItemName) 
          .Select(i => 
           new Item() 
           { 
            ItemName = i.Key, 
            ItemColor = i.First().ItemColor, 
            SomethingElse = i.First().SomethingElse, 
            Amount = i.Sum(k => k.Amount) 
           } 
          ).ToList(); 
  • のようになります(例えばFirst()) - Keyは、各グループ
  • ItemNameの値であり、
関連する問題