linq的优化问题和在groupby中搜索

时间:2013-06-15 23:54:11

标签: linq select linq-to-sql group-by

我有一个收藏'Col':

ID|Type|Type1|Type2|Count
1| a   | a   | b   |2
1| b   | a   | b   |1
2| d   | b   | d   |2
2| b   | b   | d   |2
3| x   | y   | x   |0
3| y   | y   | x   |1

我想返回一个集合,其中包含每个唯一ID,可能的类型,每种类型的总和,以及每种类型的个别计数

理想情况下,输出应为:

ID|Type1|Type2|TotalCount|Type1Count|Type2Count
1 | a   | b   | 3       |    2      |  1
2 | b   | d   | 4       |    2      |  2
3 | y   | x   | 1       |    0      |  1

目前,我在集合上执行groupBy和Select:

Col.GroupBy(g=>new{g.ID, g.Type1, g.Type2}).Select(s=>new 

{s.Key.ID, s.Key.Type1, s.Key.Type2, TotalCount = s.Sum(x=>x.Count), 

Type1Count = s.Count(x=>x.Type == s.Key.Type1) //addition of individual count severely slows down query
Type2Count = s.Count(x=>x.Type == s.Key.Type2)// same here
}
);

如上所述,包含Type1Count和Type2Count会大大增加查询在没有这些列的情况下所花费的时间。我已经尝试了各种其他方法来从每个分组行的初始Col表中获取“Count”列的值,但是再次......性能受到重创。最终会返回正确的结果。

是否有更简单,更好或更快的方法来获得相同的结果?

感谢任何帮助!

0 个答案:

没有答案