Linq / Dynamic Linq orderby第一列(或主键)

时间:2015-05-01 17:09:55

标签: c# linq pagination dynamic-linq

我已经编写了一个网格组件,我决定让没有可排序的列(在网格上)作为选项。

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'

我想让我的帮助函数通过表中的第一列或(理想情况下)主键自动应用默认顺序。我意识到一个解决方案是明确指定一个回退列作为参数,但我想尽可能避免这种情况。

0 个答案:

没有答案