2013-08-25 5 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