0

代码:

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

我使用上面的代码对日期进行了排序,它工作正常。我需要在日期排序后添加另外两个条件,即按状态按名称

4

3 回答 3

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;
于 2013-07-03T11:35:39.400 回答
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);
}
于 2013-07-03T11:35:51.677 回答
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)
    : ... ;
于 2013-07-03T11:35:59.693 回答