小编Bel*_*nda的帖子

大型LINQ分组查询,幕后发生了什么

以下面的LINQ查询为例.请不要对代码本身发表评论,因为我只是输入它来帮助解决这个问题.

以下LINQ查询使用"分组依据"并计算摘要信息.正如您所看到的,有许多计算正在对数据执行,但LINQ在幕后的效率如何.

var NinjasGrouped = (from ninja in Ninjas 
    group pos by new { pos.NinjaClan, pos.NinjaRank } 
    into con 
    select new NinjaGroupSummary 
    { 
        NinjaClan = con.Key.NinjaClan, 
        NinjaRank = con.Key.NinjaRank, 
        NumberOfShoes = con.Sum(x => x.Shoes), 
        MaxNinjaAge = con.Max(x => x.NinjaAge), 
        MinNinjaAge = con.Min(x => x.NinjaAge), 
        ComplicatedCalculation = con.Sum(x => x.NinjaGrade) != 0 
        ? con.Sum(x => x.NinjaRedBloodCellCount)/con.Sum(x => x.NinjaDoctorVisits)
        : 0,
    ListOfNinjas = con.ToList() 
    }).ToList(); 
Run Code Online (Sandbox Code Playgroud)
  1. 为了计算每个值,"Ninjas"列表被迭代了多少次?
  2. 使用foreach循环加速执行此类查询会更快吗?
  3. 在Ninjas之后添加'.AsParallel()'会导致任何性能提升吗?
  4. 是否有更好的方法来计算List的夏日信息?

任何建议都值得赞赏,因为我们在整个软件中使用这种类型的代码,我真的希望更好地了解LINQ在幕后做什么(可以这么说).也许有更好的方法?

c# linq parallel-processing foreach group-by

7
推荐指数
1
解决办法
1714
查看次数

标签 统计

c# ×1

foreach ×1

group-by ×1

linq ×1

parallel-processing ×1