我得到一个数组,其中包含对象“Person”的项目
我需要将特殊人员放在顶部(按 ID 排序的人员),将非特殊人员放在下面(按字母顺序排序的人员)。它应该看起来像这样:
有没有一种方法可以像这样排序,而不必拆分列表,单独排序,然后将其合并在一起?
首先,您可以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)