排序列表给定特定方案

时间:2013-12-24 02:17:41

标签: c# asp.net list sorting c#-4.0

我有一个对象列表,我需要根据两列进行排序:

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

等。

1 个答案:

答案 0 :(得分:1)

如何放弃CustomComparer并使用Linq?然后按多列排序变得微不足道。

var orderedList = 
      customers.OrderBy(c => c.Name).ThenByDescending(c => c.Date).ToList();