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

Ric*_*ral 3 c# linq sorting dictionary list

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

Dictionary<int, int> totalCityFilters
Run Code Online (Sandbox Code Playgroud)

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

List<Flight> unsortedFlights
Run Code Online (Sandbox Code Playgroud)

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

  1. 该列表应首先根据totalCityFilters该字典的键与该属性匹配的顺序进行排序DestinationID.航班列表可能有多个相同的航班DestinationID(这不是主键).
  2. 然后该列表应由FinalPrice属性进行排序(升序).

但是,第二种不能破坏第一种.我的意思是,如果B.DestinationID首先出现的话,更便宜的航班(A)不得在更昂贵的航班(B)A.DestinationID之上totalCityFilters.

Tim*_*ter 8

如果我理解你:

var result = unsortedFlights
             .OrderByDescending(f => totalCityFilters[f.DestinationID])
             .ThenBy( f => f.FinalPrice)
             .ToList();
Run Code Online (Sandbox Code Playgroud)

如果值totalCityFilters是您要先订购的数字.