Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 哪个LINQ查询更快?排序还是最后选择?_Performance_Linq - Fatal编程技术网

Performance 哪个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();

我正在编写一个LINQ查询,其中必须选择列表中的最后一个结果

哪个更有效

.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