我正在处理一个相当大的查询,但现在卡在最后一点。鉴于此示例表:
Key1 | Key2 | SomeCol |
0 | 0 | ABC |
0 | 1 | 123 |
------------------------------
1 | 5 | ABC |
1 | 6 | DEF |
1 | 7 | ABC |
------------------------------
2 | 4 | ABC |
2 | 5 | 456 |
2 | 6 | 456 |
------------------------------
3 | 4 | ABC |
3 | 5 | 456 |
3 | 6 | ABC |
------------------------------
4 | 4 | ABC |
4 | 5 | ABC |
4 | 6 | ABC |
在我的查询中,我已经提取了表的顺序(Key1,Key2)部分并按Key1
. 我希望确定SomeCol
除第一行之外的所有值是否相同。
Expected results:
Key1 | Key2 | SomeCol |
0 | 0 | ABC |
2 | 4 | ABC |
4 | 4 | ABC |
我知道我可以.Any(g => g.SomeCol.Distinct().Count() == 1)
在我需要所有条目都相同的情况下使用类似的东西,但我似乎无法弄清楚如何正确获取Skip(1)
. 另外,我觉得我检查相等性的方法有点像 hack。我知道我可以在 C# 中轻松完成此处理,但我希望在数据库端进行尽可能多的处理。由于我的查询目前是用扩展方法编写的,因此我希望以相同的语法回答。谢谢!
到目前为止我所拥有的:
resultFromRestOfQuery
.GroupBy(g => g.Key1)
????
.SelectMany(g => g.Take(1).Select(h => h)