代码:
IQueryable<Task> taskRecord = parentId != Guid.Empty ? _taskReadService.GetRecords()
.Where(x => x.TaskId == taskId).OrderBy(x => x.Date)
我使用上面的代码对日期进行了排序,它工作正常。我需要在日期排序后添加另外两个条件,即按状态和按名称。
代码:
IQueryable<Task> taskRecord = parentId != Guid.Empty ? _taskReadService.GetRecords()
.Where(x => x.TaskId == taskId).OrderBy(x => x.Date)
我使用上面的代码对日期进行了排序,它工作正常。我需要在日期排序后添加另外两个条件,即按状态和按名称。
正如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;
为了便于阅读,我会稍微重新格式化代码....
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);
}
我想你需要的是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)
: ... ;