2013-12-24 28 views
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; 
    } 
} 

鑑於這種情況下,我怎麼能排序基於兩列,比如我應該總是能夠排序任何這些列,但隨後按日期總是喜歡

DESCRIPTION ,DATE 
NAME, DATE 

等。

回答

1

如何開溝CustomComparer和使用LINQ?然後通過多列排序變得微不足道。

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

我不知道爲什麼,當我鍵入排序依據它不上來,它說:System.Collections.Generic.List 不包含「排序依據」的定義,並沒有擴展方法「排序依據」接受firt說法可以找到類型'System.Collections.Generic.List '。 (你是否缺少using指令或程序集引用?)。 – jedgard

+0

我在asp.net 4.0上的方式 – jedgard

+0

明白了,需要添加使用linq – jedgard