我已经编写了一个网格组件,我决定让没有可排序的列(在网格上)作为选项。
Serverside,我的查询使用.Skip
进行分页,看起来与此类似
public object PaginateQueryAsJson<TQuery>(TQuery query)
where TQuery : IQueryable<object>, IEnumerable<object>
{
if (page < 1)
page = 1;
if (pageSize < 1)
pageSize = 1;
int recordCount = needsCount ? query.Count() : -1;
if (!String.IsNullOrEmpty(sortColumnName))
query = (TQuery)query.OrderBy(sortColumnName + " " + (isAscending ? "ASC" : "DESC"));
return new
{
results = query.Skip((page - 1) * pageSize)
.Take(pageSize).ToList(),
recordCount = recordCount
};
}
我的问题是,当sortColumnName
为空或空时,.Skip
会抱怨The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'
。
我想让我的帮助函数通过表中的第一列或(理想情况下)主键自动应用默认顺序。我意识到一个解决方案是明确指定一个回退列作为参数,但我想尽可能避免这种情况。