【发布时间】:2013-08-20 15:47:04
【问题描述】:
我想就如何简化下面的 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());
我不指望整个解决方案,一些想法也会受到高度赞赏:)
【问题讨论】:
-
FWIW ReSharper 擅长将
foreach代码转换为等效的 LINQ 语句。 -
绝对推荐尝试 resharper eval
-
您可能可以取消 .ToList() 并只使用返回的 IEnumerable;这种方式可能更快,因为枚举不是由 .ToList()