分组依据和模型选择

时间:2016-04-26 13:36:18

标签: c# asp.net-mvc linq lambda

我有一个由模型定义的对象列表,我想按特定字段进行分组。分组时,需要将某些字段汇总在一起。我想按ItemName分组,金额将全部加在一起。

我的模特是:

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的定义。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

你的代码应该是这样的 列表与LT;项目&GT; groupedList = fullListOfItems                             .GroupBy(l =&gt; l.ItemName)                             。选择(i =&gt;                                 新物品()                                 {                                     ItemName = i.Key,                                     ItemColor = i.First()。ItemColor,                                     SomethingElse = i.First()。SomethingElse,                                     金额= i.Sum(k =&gt; k.Amount)                                 }                             ).ToList(); 而不是i.Key.ItemColor你有一个项目列表,你必须选择一个值(例如First()) - 键是每个组的ItemName的值