我有一个客户名单,我需要根据业务规则对列表进行排序和分组。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