0

我有一个清单:

List<User> users = getUsers();

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

IsActive
Name

排序首先按 IsActive 排序,然后按名称排序。

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

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

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

4

2 回答 2

12

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

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

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

using System.Linq;
于 2013-01-15T16:25:16.700 回答
2
var result = users.OrderByDescending(z => z.IsActive).ThenBy(z => z.Name);
于 2013-01-15T16:25:20.240 回答