我有一个对象列表,我需要根据两列进行排序:
List<Customers> customers = CustomerService.GetAll();
现在,现有代码如下:
customers.Sort(new CustomerComparer(sortColumn));
排序列可以是日期,名称,金额,描述。
在比较器类中我有
public class CustomerComparer : IComparer<Customer>
{
public CustomerComparer(string expression){}
public int Compare(Customer c, Customer d)
{
int value = 0;
switch(expression)
{
case "Name":
value = String.Compare(c.Name, d.Name,StringComparison.InvariantCultureIgnoreCase);
break;
case "Date":
value = DateTime.Compare(b.Date, d.Date);
break;
case "Description":
value = String.Compare(c.Name, d.Name,StringComparison.InvariantCultureIgnoreCase);
break;
}
return value;
}
}
鉴于这种情况,我怎么能基于两个列进行排序,例如我应该总是能够对这些列中的任何列进行排序,但是BY Date总是喜欢
DESCRIPTION ,DATE
NAME, DATE
等。
答案 0 :(得分:1)
如何放弃CustomComparer并使用Linq?然后按多列排序变得微不足道。
var orderedList =
customers.OrderBy(c => c.Name).ThenByDescending(c => c.Date).ToList();