2013-07-03 76 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) 
    : ... ; 
相關問題