LINQ - 复杂的OrderBy

时间:2014-07-04 19:17:09

标签: c# .net linq

有没有办法按两个属性订购集合? 例如:

我有一个PriorityProcess类,我想按priority(降序)和然后 arrival time(升序)订购这些实例的集合,但我希望最后一种不要覆盖前一种,更像是子排序

假设我有这个过程数组:

  1. P0 - >优先级= 1,到达时间= 0
  2. P1 - >优先级= 2,到达时间= 3
  3. P2 - >优先级= 1,到达时间= 8
  4. P3 - >优先级= 3,到达时间= 16
  5. 我想对它进行排序,所以我最终得到了这个:

    1. P3 - >优先级= 3,到达时间= 16
    2. P1 - >优先级= 2,到达时间= 3
    3. P0 - >优先级= 1,到达时间= 0
    4. P2 - >优先级= 1,到达时间= 8
    5. 有没有办法在单个LINQ指令中完成此操作?

      感谢您的时间

1 个答案:

答案 0 :(得分:4)

在sql语法中它只是

from p in priorityProcesses
orderby p.Priority descending, p.ArrivalTime
select p;

在方法语法中:

priorityProcesses
  .OrderByDescending(p => p.Priority)
  .ThenBy(p => p.ArrivalTime);