2013-08-25 33 views
0

如何在多列上排序?我試着用這個表達式:
ASP.NET MVC 4中的多重排列

if (name != null) 
{ 
    if (name.Equals(SortEnum.ASC)) 
    { 
     employees = employees.OrderBy(e => e.Name); 
    } 
    else if (name.Equals(SortEnum.DESC)) 
    { 
     employees = employees.OrderByDescending(e => e.Name); 
    } 
} 

if (surname != null) 
{ 
    if (surname.Equals(SortEnum.ASC)) 
    { 
     employees = employees.OrderBy(e => e.Surname); 
    } 
    else if (surname.Equals(SortEnum.DESC)) 
    { 
     employees = employees.OrderByDescending(e => e.Surname); 
    } 
} 

但是隻有最後一列變成了排序。某處我看到方法ThenBy(),但我沒有。 請幫忙。

+0

不能使用'ThenBy()'了'OrderBy'後?真奇怪。 –

+0

真的很奇怪,這應該是'employees.OrderBy(e => e.Name).ThenBy(e => e.Surname);'OR'employees.OrderByDescending(e => e.Name).ThenByDescending(e => e.Surname);' – Nilesh

+0

確實我可以,但只能在OrderBy方法之後。在我的例子中,我無法使用它。 – bemol

回答

0

使用System.Linq.Dynamic

List<string> orderstr = new List<string>(); 
orderstr.Add((name != null)? name.Equals(SortEnum.ASC)? "Name ASC": "Name DESC" : string.Empty); 
orderstr.Add((surname != null)? surname.Equals(SortEnum.ASC)? "Surname ASC": "Surname DESC" : string.Empty); 
var reslt = employees.OrderBy(string.Join(", ",orderstr.Where(x=>!string.IsNullOrEmpty(x)))); 
+0

好的,但外鍵有什麼用?它工作嗎? – bemol