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

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

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);

Как бы вы могли отсортировать результат вне репозитория с помощью Dynamic Query?

return View( "myView", result.OrderBy("Price"));

Каким-то образом я теряю природу DynamicQuery, когда данные выходят из репозитория. И да, я еще не придумал, как вернуть тип CarClass, где вы обычно делаете Select new Carclass { fieldName = m.fieldName, ... }


person Zachary Scott    schedule 23.03.2010    source источник


Ответы (1)


Динамический запрос требует:

  • источник будет IQueryable<T> (поэтому, если это IEnumerable<T> или аналогичный, просто вызовите .AsQueryable() на нем)
  • дополнительная dll, на которую нужно ссылаться в коде, который хочет выполнить динамический запрос
  • соответствующие директивы using должны находиться в верхней части локального исходного файла

Проверьте эти три, и вы сможете добавить .Where(condition), .OrderBy(name) и т. д.

person Marc Gravell    schedule 23.03.2010
comment
Бинго. Вот что мне дает ночное программирование. - person Zachary Scott; 24.03.2010