我正在处理一个相当大的查询,但现在卡在最后一点。鉴于此示例表:
  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)