繁体   English   中英

LINQ:分组属性后如何在对象内聚合列表

[英]LINQ: how to aggregate list within object after grouping properties

我有一个包含列表的对象ChartObject。 然后,我有一个使用LINQ删除重复属性的ChartObjects列表。 但是我不知道如何组合ChartObjects的每个“ itemList”属性。

public class ChartObject
{
    public string Type { get; set; }
    public int Year { get; set; }
    public long Cost { get; set; }
    public List<Items> itemList { get; set; }
}

List<ChartObject> coList = GetItems();

result = coList.GroupBy(i => new { i.Type, i.Year }).Select(g => new ChartObject
{
    Type = g.Key.Type,         
    Year = g.Key.Year,
    Cost = g.Sum(i => i.Cost), 
    itemList = g.Select(i => i.itemList)    //Does not work
}).ToList();

我假设它不像编译器所说的那样简单地投射itemList,并且必须进行某种聚合吗?

假设您只想合并组中的所有项目,那么您正在寻找SelectMany ,并且需要调用ToList以获得List<Items>

g.SelectMany(i => i.itemList).ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM