2013-07-03 3 views
0

Код:Linq запрос для сортировки по дате, затем по статусу, а затем по имени

IQueryable<Task> taskRecord = parentId != Guid.Empty ? _taskReadService.GetRecords() 
          .Where(x => x.TaskId == taskId).OrderBy(x => x.Date) 

Я отсортирован дата используя выше код и он работал мелкий. Мне нужно добавить еще два после сортировки даты, то есть по статусу и по названию.

+1

Вы использовали 'ThenBy' вместо' OrderBy' для других предметов, кроме первого? – Caramiriel

+0

Нет, я не использовал 'ThenBy'. Если возможно, измените приведенный выше код и опубликуйте как ответ. –

ответ

0

Как Caramiriel предложил использовать ThenBy

IQueryable<Task> taskRecord = parentId != Guid.Empty ? _taskReadService.GetRecords() 
          .Where(x => x.TaskId == taskId) 
          .OrderBy(x => x.Date) 
          .ThenBy(x => x.Status) 
          .ThenBy(x => x.Name) : null; 
0

Я повторно форматирования кода немного для удобства чтения ....

IQueryable<Task> taskRecord = null; 
if(parentId != Guid.Empty) 
{ 
    taskRecord = _taskReadService.GetRecords() 
            .Where(x => x.TaskId == taskId) 
            .OrderBy(x => x.Date) 
            .ThenBy(x => x.Status) 
            .ThenBy(x => x.Name); 
} 
0

Я думаю, что вам нужно, это ThenBy. Добавление второго OrderBy сбрасывает порядок сортировки (фактически выполняет сортировку, а затем прибегает к другому времени). Экстраполируя пример:

IQueryable<Task> taskRecord = 
    parentId != Guid.Empty 
    ? _taskReadService.GetRecords() 
     .Where(x => x.TaskId == taskId) 
     .OrderBy(x => x.Date) 
     .ThenBy(x => x.Status) 
     .ThenBy(x => x.Name) 
    : ... ; 
Смежные вопросы