我有一個客戶名單,我需要根據業務規則對列表進行排序和分組。linq分組和排序
- 組由客戶名稱
- 排序按字母順序
- 如果有相同名稱的幾個結果,那麼就需要通過出生日期進行升序排序(最老的上市客戶名稱第一個)
下面是實體。
public class Customer
{
public string FirstName {get; set;}
public string LastName {get; set;}
public DateTime DateofBirth {get; set;}
}
在此先感謝。
customers.GroupBy(c => c.FirstName)
.Select(c => c.OrderBy(c => c.FirstName).ThenBy(c => c.LastName));
第三個規則是情況下,如果列表中有更多的一個客戶有相同的名稱。那時按DateofBirth排序。 – 2010-10-28 11:56:41
正如我前面提到的 - 如果您有多個同名客戶,他們將被分組爲一個。但是如果你不想'合併'它們,你並不需要'GroupBy' - 只需使用'OrderBy(...)。ThenBy(...)。ThenBy(...)'。你期望什麼樣的輸出,順便說一句?如果你想要一個簡單的列表 - 在我的查詢中使用'ToList()',如果你想要,例如'List>' - 應用'ToList()'給Mark Heath的答案。 –
Yakimych
2010-10-28 12:46:23