我有以下查询,我在列表列表中使用SelectMany,然后使用GroupBy' Name'并且计算'列表并将值存储在'值'和' Count'。
var groups = originalList.SelectMany(fullList => fullList.ListOfItems, (fullList, details) => new { fullList.Name, fullList.ListOfItems })
.GroupBy(x => x.Name,
x => x.ListOfItems.Count())
.Select(g => new { Name = g.Key, Count = g.Count()});
//Do something with results
foreach (var item in groups)
{
var name = item.Name;
var count = item.Count;
}
现在我想将实际的ListOfItems传递给我的最终组,因为我也想访问它。
所以我想最终:
foreach (var item in groups)
{
var value = item.Name;
var count = item.Count;
var list = item.ListOfItems. <-- I want this also
}
如何修改此查询以执行此操作?
答案 0 :(得分:0)
你的查询做得太多了。它创建的对象复制Name
的次数与每个ListOfItems
中的项目数相同,然后您必须再次使用GroupBy
重复删除Name
。
自然群体已经存在:originalList
本身。您只需从该列表中选择项目并返回其ListOfItems
及其计数:
from org in originalList
select new
{
org.Name,
Count = org.ListOfItems.Count(),
Items = org.ListOfItems
}