2015-06-25 59 views
1

我有一個列表,其中的元素遵循一個序列。我想用骨料與排序依據和ThenBy用OrderBy和ThenBy聚合

List<string> list = new List<string> {"codCustomer", "customerName", "address1", "address2"}; 

list = list 
    .OrderBy(o => o.codCustomer) 
    .ThenBy(o => o.customerName) 
    .ThenBy(o => o.address1) 
    .ThenBy(o => o.addres2) 

這份清單包含許多內容,我想用骨料與排序依據和ThenBy,但我不知道該怎麼做。

問題是,此列表作爲參數傳遞幷包含要排序的字段。

+0

是一個'list'屬性名稱列表,另一個'list'是具有這些屬性的對象的不同列表? –

回答

0

您應該使用屬性Code,Name,Address1和Address2定義一個名爲Customer的類,並創建一個客戶對象列表,而不是一個字符串列表。然後,您可以按照您描述的方式訂購客戶名單。

class Customer 
{ 
    public string Code { get; set; } 
    public string Name { get; set; } 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
} 
... 
// at some point 
List<Customer> customers = new List<Customer>(); 
customers.Add(new Customer() 
{ 
    Code = "cod1", 
    Name = "nam1", 
    Address1 = "ad1", 
    Address2 = "ad2" 
}; 
// ... more customers 
// you order customers the way you need 
List<Customer> orderedCustomers = customers.OrderBy(p => p.Code).ThenBy(p => p.Name).ToList(); // you can continue ordering by all the properties if you want. 
+1

問題是這個列表作爲參數傳遞並且包含要排序的字段。 – beto13

+1

EF已延期執行,因此您可以使用IF語句並通過任何屬性進行排序。例如:if(sortByCode)var result = customers.OrderBy(p => p.Code);我能想到的最簡單的解決方案即使不是最好的,也是從列表中選擇每個屬性名稱並按該屬性排序,然後繼續下一個屬性(您正在迭代屬性列表以進行排序)。閱讀此問題:http://stackoverflow.com/questions/307512/how-do-i-apply-orderby-on-an-iqueryable-using-a-string-column-name-within-a-gene –

相關問題