如何根据2个条件对List <User>进行排序?

loy*_*low 0 c# sorting list

我有一个清单:

List<User> users = getUsers();
Run Code Online (Sandbox Code Playgroud)

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

IsActive
Name
Run Code Online (Sandbox Code Playgroud)

按IsActive排序第一个排序,然后按名称排序.

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

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

此列表中的项目少于100个,因此性能不是真正的问题.

Mir*_*Mir 12

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

var users = getUsers().
    OrderByDescending(u => u.IsActive).
    ThenBy(u => u.Name).
    ToList();
Run Code Online (Sandbox Code Playgroud)

请记住添加到您的using指令:

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

  • 你需要`OrderByDescending`.否则OP将首先处于非活动状态(_"活动用户将位于列表顶部,..."_). (2认同)