使用 LINQ 根据另一个列表后跟一个属性对列表进行排序
本文关键字:列表 属性 一个 排序 LINQ 另一个 使用 | 更新日期: 2023-09-27 18:35:30
以下字典表示目标城市ID的键/值对以及与该城市关联的筛选器数量:
Dictionary<int, int> totalCityFilters
这本字典是按过滤器数量的降序排序的,这就是我需要的方式。然后我有一个未排序的航班列表:
List<Flight> unsortedFlights
每个Flight
对象都有一堆属性,其中与我的问题最相关的属性是DestinationID
和FinalPrice
。我需要创建一个新的航班列表,根据以下 2 个前提对它们进行排序:
- 列表应首先根据
totalCityFilters
的顺序进行排序,该字典上的键与属性DestinationID
匹配。航班列表可能包含具有相同DestinationID
的多个航班(这不是主键)。 - 然后,应按
FinalPrice
属性对列表进行排序(升序)。
但是,第二种不能破坏第一种。我的意思是,如果B.DestinationID
更便宜的航班 (A) 首先出现在比totalCityFilters
上A.DestinationID
,则更便宜的航班 (A) 不得在更昂贵的航班 (B) 之上。
如果我
理解正确的话:
var result = unsortedFlights
.OrderByDescending(f => totalCityFilters[f.DestinationID])
.ThenBy( f => f.FinalPrice)
.ToList();
如果 totalCityFilters
的值是要首先排序的数字。