在筛选数据时简化 linq
本文关键字:linq 筛选 数据 | 更新日期: 2023-09-27 18:28:30
我想征求如何简化下面的foreach块的建议。我试图在一个 linq 语句中完成所有内容,但我无法弄清楚如何在查询中操作"计数"值。
有关我想要实现的目标的更多详细信息:- 我有一个巨大的列表,其中包含潜在的重复项,其中 Id 是重复的,但属性"计数"是不同的数字- 我想摆脱重复项,但仍然不丢失那些"计数"值- 所以对于具有相同 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());
我不指望整个解决方案,想法也会受到高度赞赏:)
鉴于您正在更改集合,我个人只会用计数制作一个新的"项目":
var results = bigList.GroupBy(c => c.Id)
.Select(g => new Item(g.Key, g.Sum(i => i.Count)))
.ToList();
这将执行从原始实例到新的Item
实例集合的简单映射,具有正确的Id
和Count
值。
var filtered = bigList.GroupBy(c=>c.Id)
.Select(g=> {
var f = g.First();
f.Count = g.Sum(c=>c.Count);
return f;
});