我有一个存储在 SQL Server 中的表,我希望使用 LINQ 进行查询。表的模糊描述:
  ID1  |  ID2  |  SomeData
-----------------------------
   1   |   1   |  'Moo'
   1   |   2   |  'Meow'
   1   |   3   |  'Woof'
   1   |   4   |  'Cheap'
   2   |   1   |  'Quack'
   2   |   2   |  'Grrrrr'
   2   |   3   |  'Wan wan'
我只对每个示例所需结果ID2的最大值所在的行感兴趣:ID1
   1   |   4   |  'Cheap'
   2   |   3   |  'Wan wan'
我想出了这个 SQL 代码:
SELECT *
FROM SomeTable a
INNER JOIN
(
    SELECT ID1, MAX(ID2) as SomeName
    FROM SomeTable
    GROUP BY ID1
) as b
ON a.ID1 = b.ID1 and a.ID2 = b.SomeName
在 LINQ 中实现时,是否还需要子查询?也就是说,查询数据库并使用“内部查询”结果加载变量,然后查询同一个表但与“内部查询”中的值进行比较?我知道如果我修修补补一段时间,我最终会得到它,但我觉得在 LINQ 中可能有一些奇特的方法可以很容易地做到这一点。
期望的答案将利用扩展方法语法。
奖励:是否有任何类型的标准 LINQ 语法到扩展方法语法转换器?你们用什么工具来玩 LINQ 语句?对我来说,需要整个 c#(对我来说是 ASP.NET MVC)来处理 LINQ 查询似乎有点麻烦。