我有一个存储在 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 查询似乎有点麻烦。