我有一个集合'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 表中获取“计数”列的值,但是再次......性能受到很大影响。但最终会返回正确的结果。
是否有更简单、更好或更快的方法来实现相同的结果?
任何帮助表示赞赏!