Performance 哪个LINQ查询更快?排序还是最后选择?
我正在编写一个LINQ查询,其中必须选择列表中的最后一个结果 哪个更有效Performance 哪个LINQ查询更快?排序还是最后选择?,performance,linq,Performance,Linq,我正在编写一个LINQ查询,其中必须选择列表中的最后一个结果 哪个更有效 .OrderByDescending(x=>x.Id).First() 或 .Last()两者都不能说更有效。他们做不同的事情 .Last(); 这个函数返回序列的最后一个元素(如果有),不进行排序 .OrderByDescending(x => x.Id).First(); 这一个返回最后一个元素,如果按升序排序,如果有。结果将与以下结果相同: .OrderBy(x => x.Id).Last();
.OrderByDescending(x=>x.Id).First()代码>
或
.Last()代码>两者都不能说更有效。他们做不同的事情
.Last();
这个函数返回序列的最后一个元素(如果有),不进行排序
.OrderByDescending(x => x.Id).First();
这一个返回最后一个元素,如果按升序排序,如果有。结果将与以下结果相同:
.OrderBy(x => x.Id).Last();
b比c更有效,因为排序后,枚举数只需移动到第一个元素旁边,而对于c,枚举数必须移动到下一个(),直到没有更多的元素。是苹果和桔子。第一个订单按Id排序,第二个只接受当前订单并选择最后一个。如果后者已经是一个列表或数组之类的集合,那么后者的效率更高。我投票结束这个问题,因为这个问题问什么更快,苹果还是橙子。有道理,但你明白我的意思吗?如果列表已按Id升序排列,并且您将使用Last
获取Id最高的项目,那么这将是有意义的。但是,当然,已经订购的东西比必须先订购的东西要快,无论您使用的是first
还是Last
。如果您将.OrderByDescending(x=>x.Id).First()
与.OrderBy(x=>x.Id).Last()进行比较,那么First
将更有效率,因为它不需要枚举所有项。我明白您的意思。谢谢:)
var sequence = {4, 1, 3}
var a = sequence.Last(); // result: 3
var b = sequence.OrderByDescending(x => x.Id) // intermediate result: 4, 3, 1
.First(); // final result: 4
var c = sequence.OrderBy(x => x.Id) // intermediate result: 1, 3, 4
.Last(); // final result: 4