如果我有IOrderedEnumberable<Car>,我会对它进行排序然后进行投影查询...
投影中保留的顺序是什么?
例如,这种情况有效吗?
IOrderedEnumberable<Car> allCarsOrderedFastestToSlowest =
GetAllCars()
.OrderByDescending(car=>car.TopSpeed);
var top3FastestCarManufacturers =
allCarsOrderedFastestToSlowest
.Select(car=>car.Manufacturer)
.Distinct()
.Take(3);
Run Code Online (Sandbox Code Playgroud)
top3FastestCarManufacturers变量的名称是否表达了代码中实际发生的含义?
该方法的文档Distinct没有说明是否保留订单。这可能是因为它取决于源的底层实现。
您可以使用分组来获得所需的结果,方法是从每个制造商中获取最快的汽车,然后从中获取三辆最快的汽车:
var topThreeFastestCarManufacturers =
GetAllCars()
.GroupBy(c => c.Manufacturer)
.Select(g => g.OrderByDescending(c => c.TopSpeed).First())
.OrderByDescending(c => c.TopSpeed)
.Take(3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
626 次 |
| 最近记录: |