这是我想出的解决方案。请注意,它与@OdeToCode提出的解决方案非常接近(但使用VB语法),但有一个主要区别:
Dim temp = _ (From t In context.MyTable _ Group t.f1, t.f2, t.f3 By t.title Into g = Group _ Select title, g).ToListDim results = _ From t In temp _ Select t.title, _ f1_count = t.g.Count(Function(x) If(x.f1, False)), _ f2_count = t.g.Count(Function(x) If(x.f2, False)), _ f3_count = t.g.Count(Function(x) If(x.f3, False))
第一个查询进行分组,但是ToList从服务器按原样获取分组的数据。在这里消除计数可以防止生成的SQL语句为每个计数生成子SELECT。我在本地第二个查询中进行计数。
这行得通,因为我知道第一个查询将返回可管理的行数。如果要返回数百万行,我可能不得不朝另一个方向前进。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)