При реализации Kendo Grid в MVC, который выполняет операции на стороне сервера, я оказался в сложной ситуации, т. Е. Мне нужно фильтровать, сортировать, выгружать мои данные с помощью 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).