我想优化以下LINQ语句的性能,或者需要一些可以更有效地执行的替代方案...
var temp = (from r in jc
group r by new { r.City, r.Gender, r.AgeBracket } into g
select new Summary
{
Population = g.Sum(x => (decimal)x.Population),
State = g.Select(x => x.City).First(),
Gender = g.Select(x => x.Gender).First(),
AgeBracket = g.Select(x => x.AgeBracket).First()
}).ToArray();
请让我知道LINQ的任何替代方法来执行此类操作,因为我观察到LINQ在产生大量数据结果时具有相当大的性能开销。
编辑1
我不是从数据库中查询它,而是在用于生成摘要的内存对象中进行了自定义。
最佳答案
可以使用g.Select(xxx).First
代替g.Key.XXX
:
select new Summary
{
Population = g.Sum(x => (decimal)x.Population),
State = g.Key.City,
Gender = g.Key.Gender,
AgeBracket = g.Key.AgeBracket
}
关于c# - LINQ的优化或替代(用于聚合)C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22839125/