如何排序List基于两个条件

本文关键字:User 于两个 条件 List 何排序 排序 | 更新日期: 2023-09-27 17:53:14

我有一个列表:

List<User> users = getUsers();

User对象有两个我想排序的属性:

IsActive
Name

排序先按IsActive排序,再按名称排序。

因此活动用户将在列表的顶部,按名称排序。然后将列出所有在活动的用户(按字母顺序排序)。

这是可能的还是我必须打破列表,然后合并它们?

这个列表中只有不到100个条目,所以性能不是真正的问题。

如何排序List<User>基于两个条件

仅使用OrderByThenBy。感谢Tim Schmelter的评论。如果您使用OrderBy,您将获得IsActive == false在您列表顶部的用户。

var users = getUsers().
    OrderByDescending(u => u.IsActive).
    ThenBy(u => u.Name).
    ToList();

请记住在using指令中添加:

using System.Linq;
var result = users.OrderByDescending(z => z.IsActive).ThenBy(z => z.Name);