C#, LINQ, Динамический запрос: код для фильтрации динамического запроса за пределами репозитория

StackOverflow https://stackoverflow.com/questions/2497918

Вопрос

Если вы сделаете что -то подобное в своем хранилище:

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), так далее

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top