Я использую breeze.net для обработки запросов ODATA. Это моя конечная точка:
public IQueryable<Car> Cars()
{
IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");
return cars;
}
Если от клиента передаются фильтры или разбиение на страницы, они будут правильно применены к IQueryable при возврате вышеуказанного метода.
Однако я хотел бы применить их ДО возврата, потому что я хотел бы вызвать ToList () и выполнить некоторую обработку данных:
public IQueryable<Car> Cars()
{
IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");
var myCars = cars.ToList()
// do stuff
return cars.AsQueryable();
}
Очевидно, что вышеуказанное работает, но ни один из фильтров / разбиения на страницы, переданных от клиента, не применяется. Есть ли способ добиться этого? (К вашему сведению, я использую NHibernate, поэтому NHContext, а не EntityFramework)





Используете ли вы поддержку WebAPI OData? Если это так, я думаю, вы могли бы сделать что-то в этом роде:
public virtual IEnumerable<Car> YourGetCarsWebApiEndpoint(ODataQueryOptions<Car> options)
{
var queryable = yourCarsRepository.Cars();
// Explicitly apply OData options to queryable:
queryable = (IQueryable<Car>)options.ApplyTo(queryable);
var cars = queryable.ToList();
// Do stuff:
return cars;
}
Извините, но вы, возможно, уже проверили их на предмет идей, но на всякий случай: stackoverflow.com/questions/18705932/…
Ну, собственно говоря, я об этом не знал! Спасибо. Однако я использую Breeze.WebApi2 вместо Breeze.WebApi, как в примере. А такого метода, как Breeze.WebApi.QueryHelper.ApplyQuery, нет. Я спрошу на их гитхабе, если они здесь не ответят ..
на самом деле их github, похоже, заморожен, и поддержка не предоставляется ... Надеюсь, они могут ответить здесь.
Но есть, не так ли ?: github.com/Breeze/breeze.server.net/blob/…
Спасибо, но нет. Я использую ветерок. Я уже пробовал ваше решение, но оно не работает.