繁体   English   中英

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

[英]Sort a list based on another list followed by a property on itself with LINQ

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

Dictionary<int, int> totalCityFilters

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

List<Flight> unsortedFlights

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

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

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

如果我理解你:

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

如果totalCityFilters的值是您totalCityFilters的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM