今天我遇到了使用Linq To Sql找到最有效的数据库查询的问题。
我想从db.ElementsCollection获取具有最低element.SomeNumber值的元素。
我只是设法通过以下查询来实现:
var query = db.ElementsCollection
.First(o => o.SomeNumber == (db.ElementsCollection.Max(or => or.SomeNumber)));
是否有更有效的查询来完成此任务?
答案 0 :(得分:1)
这不是你想要的:
var maxNumber=db.ElementsCollection.OrderByDescending(o=>o.SomeNumber).First();
答案 1 :(得分:1)
您可以在属性OrderByDescending
上使用SomeNumber
,然后获取第一项:
var query = db.ElementsCollection
.OrderByDescending(o => o.SomeNumber)
.First();
或者您可以使用morelinq:
var query = db.ElementsCollection
.MaxBy(o => o.SomeNumber);
答案 2 :(得分:1)
怎么样:
var query = db.ElementsCollection.OrderByDescending(o => o.SomeNumber).First();
或者
var query = (from o in db.ElementsCollection
order by o.SomeNumber descending
select o).First();
应该在SQL Query中将其翻译为TOP(1)
。