我有一個列表:如何根據2條件對列表<User>進行排序?
List<User> users = getUsers();
用戶對象有2個屬性我想排序:
IsActive
Name
排序首先由IsActive排序,然後按名稱排序。
所以活動用戶將位於列表頂部,按名稱排序。然後列出所有非活動用戶(按字母順序排列)。
這是可能的還是我必須打破清單,然後合併它們?
這個列表中有不到100個項目,所以性能不是真正的問題。
我有一個列表:如何根據2條件對列表<User>進行排序?
List<User> users = getUsers();
用戶對象有2個屬性我想排序:
IsActive
Name
排序首先由IsActive排序,然後按名稱排序。
所以活動用戶將位於列表頂部,按名稱排序。然後列出所有非活動用戶(按字母順序排列)。
這是可能的還是我必須打破清單,然後合併它們?
這個列表中有不到100個項目,所以性能不是真正的問題。
只需使用OrderBy
和ThenBy
。感謝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);
你可能要考慮的是做'GroupBy'爲'IsActive'另一種可能性,特別是如果你想進行一些邏輯只有活躍的用戶。 – NominSim
爲什麼是負面投票?在我看來,這是一個有效的問題。 – Audrius
@Audrius它是有效的,但它沒有適當的研究。 – NominSim