使用LINQ对基于另一个列表的列表进行排序,然后使用属性本身

时间:2012-05-27 00:17:01

标签: c# linq list sorting dictionary

以下字典表示目标城市ID的键/值对以及与该城市相关联的过滤器数量:

Dictionary<int, int> totalCityFilters

这个词典按过滤器的数量降序排序,这就是我需要它的方式。然后我有一份未分类的航班列表:

List<Flight> unsortedFlights

每个Flight对象都有一堆属性,其中与我的问题最相关的是DestinationIDFinalPrice。我需要根据以下两个前提创建一个新的航班列表:

  1. 首先应根据totalCityFilters的顺序对列表进行排序,该字典上的键与属性DestinationID匹配。航班列表可能包含多个具有相同DestinationID的航班(这不是主键)。
  2. 然后应该通过FinalPrice属性对列表进行排序(升序)。
  3. 然而,第二种不能破坏第一种。我的意思是,如果B.DestinationID,更便宜的航班(A)不能在更昂贵的航班(B)之上。首先显示的是A.DestinationID上的totalCityFilters

1 个答案:

答案 0 :(得分:8)

如果我理解正确的话:

var result = unsortedFlights
             .OrderByDescending(f => totalCityFilters[f.DestinationID])
             .ThenBy( f => f.FinalPrice)
             .ToList();

如果totalCityFilters的值是您要先订购的号码。