c# - 根据另一个列表对列表进行排序,然后使用 LINQ 对其自身进行排序

标签 c# linq list sorting dictionary

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

Dictionary<int, int> totalCityFilters

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

List<Flight> unsortedFlights

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

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

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

最佳答案

如果我没理解错的话:

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

如果totalCityFilters的值是你想先排序的数字。

关于c# - 根据另一个列表对列表进行排序,然后使用 LINQ 对其自身进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770727/

相关文章:

c# - 如何通过保留 IGrouping 来过滤 IGrouping 的 IEnumerable 的元素

c# - LINQ 到 XML。如何获得一些字符串?

javascript - Sencha Touch 在单击容器时创建无法销毁弹出窗口。它创建多个弹出窗口并为设置数据值创建错误

集合和迭代器的 C# 性能

c# - 如何使现有 C# 库与 UWP 兼容?

c# - 将 Emit IL 与内部类一起使用?

c# - Amazon S3 错误 - 无法为 SSL/TLS 安全通道建立信任关系

c# - 如何从 Sitefinity 10 中的动态模块集合中检索图像数据?

python - 将多行字符串的每一行发送到 for 循环中的列表

对逗号分隔数字列表进行排序的 Pythonic 方法