过滤数据时简化linq

Ane*_*ook 4 .net c# linq

我想问一下如何简化下面的foreach块的建议.我试图在一个linq语句中完成所有操作,但我无法弄清楚如何在查询中操作"count"值.

关于我正在努力实现的更多细节: - 我有一个巨大的列表,其中包含潜在的重复项,其中Id是重复的,但属性"Count"是不同的数字 - 我想摆脱重复,但仍然不要放弃那些"计算"值 - 所以对于具有相同Id的项目我总结了"计数"属性

不过,目前的代码看起来并不漂亮:

var grouped = bigList.GroupBy(c => c.Id).ToList();
foreach (var items in grouped)
{
    var count = 0;
    items.Each(c=> count += c.Count);
    items.First().Count = count;
}
var filtered =  grouped.Select(y => y.First());
Run Code Online (Sandbox Code Playgroud)

我不指望整个解决方案,一些想法也将受到高度赞赏:)

Ree*_*sey 5

鉴于你正在改变这个集合,我个人只会用计数制作一个新的"项目":

var results = bigList.GroupBy(c => c.Id)
                     .Select(g => new Item(g.Key, g.Sum(i => i.Count)))
                     .ToList();
Run Code Online (Sandbox Code Playgroud)

Item将使用正确的值IdCount值执行从原始实例到新实例集合的简单映射.