在MVC中实现执行服务器端操作的Kendo Grid时,我发现自己处于棘手的状态,即我必须使用linq过滤,排序,分页我的数据。我得到的所有信息都是ODataQueryOptions类型。
(不确定是否有必要提及,但为了完整起见,我们通过UnitOfWork模式执行查询操作)
因此执行查询的操作将复制到下面:
public static List<T> GetT(this IRepositoryAsync<T> repository, ODataQueryOptions<T> options)
{
var query = repository.Query().Tracking(false).Include(x => x.T2)
.Select(s => new
{
P1 = s.P1,
P2 = s.P2,
P3 = s.T2.P1 + "," + s.T2.P2
})
.Select(s => new T1
{
P1 = s.P1,
P2 = s.P2,
P3 = s.P3
});
if (options.Skip != null)
query = query.Skip(options.Skip.Value);
if (options.Top != null)
query = query.Take(options.Top.Value);
return query.ToList();
}
现在,我想知道是否有选项可以将剩余的oData选项应用于linq查询(如您所见,$ skip和$ top已经应用,我们如何应用OrderByQueryOption和FilterQueryOption)。
答案 0 :(得分:0)
在OrderByQueryOption中有一个属性OrderByNodes
您可以使用它来构建您的查询,但在FilterQueryOption中,很难翻译FilterClause,您需要使用FilterBinder执行此操作你在5.9.1中没有公开,它在6.0.0中是公开的。