【问题标题】:Group by and Select with Models按模型分组和选择
【发布时间】:2016-04-26 13:36:18
【问题描述】:

我有一个由模型定义的对象列表,我想按特定字段分组。分组时,某些字段需要汇总在一起。我想按 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 的定义。

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

【问题讨论】:

  • 确保你的使用列表中包含using System.Linq'
  • 已经在顶部了

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


【解决方案1】:

你的代码应该是这样的

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();
  • 你有一个项目列表,而不是 i.Key.ItemColor,你必须选择一个值(例如 First()) - Key 是每个组的 ItemName 的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-21
    • 2016-07-31
    • 2017-04-24
    • 2012-03-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多