C#, LINQ, Динамический запрос: код для фильтрации динамического запроса за пределами репозитория
-
21-09-2019 - |
Вопрос
Если вы сделаете что -то подобное в своем хранилище:
IQueryable<CarClass> GetCars(string condition, params object[] values) {
return db.Cars.Where(condition, values);
}
И вы устанавливаете условие и значения за пределами репозитория:
string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };
var result = myRepo.GetCars( condition, values);
Как бы вы смогли сортировать результат за пределами репозитория с динамическим запросом?
return View( "myView", result.OrderBy("Price"));
Каким -то образом я теряю динамику, когда данные выходят из репозитория. И да, я не выработал, как вернуть тип Carclass, где вы обычно делаете новый Carclass {FieldName = M.FieldName, ...}
Решение
Динамический запрос требует:
- Источник будет
IQueryable<T>
(так что если это такIEnumerable<T>
или аналогично, просто позвоните.AsQueryable()
в теме) - Дополнительный DLL на код, который хочет выполнить динамический запрос
- соответствующий
using
Директивы должны быть на месте в верхней части локального исходного файла
Проверьте эти три, и вы сможете добавить .Where(condition)
, .OrderBy(name)
, так далее
Не связан с StackOverflow