【发布时间】:2016-08-04 19:40:42
【问题描述】:
我想根据名为 DisplayOrder 的列按升序对记录进行排序。如果 DisplayOrder 为 null 或 0,那么这些记录应该排在最后。默认情况下,带有 0 或 null 的 DisplayOrder 显示为顶部记录。我想确保所有具有 NULL DisplayOrder 的记录都出现在具有非 NULL DisplayOrder 的记录之后,然后按 DisplayOrder 排序,这样可以确保所有具有 DisplayOrder 的记录都正确排序。
这就是我试图实现它的方法。
public DataResponse<EKGType> GetByPage(KendoGridPost kendo)
{
try
{
DataResponse<EKGType> response = new DataResponse<EKGType>(ResponseType.Failure);
using (BusinessEntities context = new BusinessEntities())
{
IEnumerable<EKGTypes> items = context.EKGTypes
.ToList()
.Select(c => MapEntity(c))
.OrderBy(c => c.DisplayOrder.HasValue)
.ToList();
response.Data = items.Skip(kendo.Skip).Take(kendo.PageSize).ToList();
response.Count = items.Count();
response.ResponseType = ResponseType.Success;
}
return response;
}
catch (Exception ex)
{
return HandleDataResponseException<EKGType>(ex);
}
}
这将首先返回具有 null/0 值的记录。我一直在寻找过去的一个小时,可以在 sql 中找到答案,但在 linq 中找不到。
【问题讨论】: