假设我有一个包含数百万条记录的表 Tab1:
Tab1(id, id1,id2, value, ...)
使用 SQL 如下:
Select * from Tab1 Where id1=123;
我得到 100 条记录。然后我想从这 100 条记录中获取一个具有最大 id 值的记录。
如何为此编写最简单的 SQL?
当我使用 EF 将此表与 EF 中的实体匹配时,如何编写 LINQ 以获得相同的结果?
假设我有一个包含数百万条记录的表 Tab1:
Tab1(id, id1,id2, value, ...)
使用 SQL 如下:
Select * from Tab1 Where id1=123;
我得到 100 条记录。然后我想从这 100 条记录中获取一个具有最大 id 值的记录。
如何为此编写最简单的 SQL?
当我使用 EF 将此表与 EF 中的实体匹配时,如何编写 LINQ 以获得相同的结果?
这可以通过 ORDER BY 和 TOP 来完成。
在 SQL 中:
SELECT TOP 1 *
FROM Tab1
WHERE id1 = 123
ORDER BY id desc
在带有 EF 的 Linq 中:
Tab1.Where(t => t.id1 == 123).OrderByDescending(t => t.id).FirstOrDefault();
我认为最简单的方法可以是:
Select * from Tab1 Where id1=123 AND id = (SELECT First(Max(id)) from Tab1 where id1 = 123)
您可以删除if 值是不同的(如果有多行具有相同的最大值,First
我不知道行为如何)Max
关于Linq
你可以使用类似的东西:
Tab1.Where(t => t.id == 123).OrderByDescending(t => t.id).FirstOrDefault();