C# 按多个不同条件对数组进行排序

k.t*_*012 2 c# arrays sorting

我得到一个数组,其中包含对象“Person”的项目

是

我需要将特殊人员放在顶部(按 ID 排序的人员),将非特殊人员放在下面(按字母顺序排序的人员)。它应该看起来像这样:

应该

有没有一种方法可以像这样排序,而不必拆分列表,单独排序,然后将其合并在一起?

Dmi*_*nko 7

首先,您可以OrderBy通过Special(请注意false < true),然后您可以在其中使用条件ThenBy,如下所示:

var result = persons
  .OrderBy(person => person.Special != "Yes")
  .ThenBy(person => person.Special == "Yes" ? person.Id : 0)
  .ThenBy(person => person.Special == "Yes" ? "" : person.Name);
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢条件排序,因为我认为“true”比“false”“更高”。但对于所有其他人,我会让它更明确:`persons.OrderBy(p =&gt; p.Special == "Yes" ? 0 : 1)...` (2认同)