gpt4 book ai didi

c# - 在 LINQ 中,IOrderedEnumerable 的投影是否保留顺序?

转载 作者:太空狗 更新时间:2023-10-29 21:36:34 25 4
gpt4 key购买 nike

如果我有一个 IOrderedEnumberable<Car> ,我对其进行排序,然后进行投影查询...

投影中的顺序是否保留?

例如,这个场景可行吗?

IOrderedEnumberable<Car> allCarsOrderedFastestToSlowest = 
GetAllCars()
.OrderByDescending(car=>car.TopSpeed);

var top3FastestCarManufacturers =
allCarsOrderedFastestToSlowest
.Select(car=>car.Manufacturer)
.Distinct()
.Take(3);

top3FastestCarManufacturers 的名称变量传达代码中实际发生的事情的含义?

最佳答案

Distinct 方法的文档没有说明是否保留顺序。这可能是因为它取决于源代码的底层实现。

您可以使用分组来获得所需的结果,方法是从每个制造商那里获得最快的汽车,然后从中获得最快的三辆:

var topThreeFastestCarManufacturers =
GetAllCars()
.GroupBy(c => c.Manufacturer)
.Select(g => g.OrderByDescending(c => c.TopSpeed).First())
.OrderByDescending(c => c.TopSpeed)
.Take(3);

关于c# - 在 LINQ 中,IOrderedEnumerable<T> 的投影是否保留顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com