我想优化以下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/

10-11 02:44
查看更多