Я ПЕРВЫЙ пытаюсь отфильтровать набор продуктов, затем заказать их
(repository.GetAllProducts()
.Where(x=>x.Naam.Contains("filter")) as ObjectQuery<Product>)
.FunkyOrder<Product>(sortfield,sortdirection)
Использование метода Extension:
public static IEnumerable<T> FunkyOrder<T>(this ObjectQuery<T> input, string fieldname = "Id", string sortdirection = "asc")
{
switch (sortdirection)
{
case "dsc":
case "desc":
return input.OrderBy("it." + fieldname + " DESC");
default:
return input.OrderBy("it." + fieldname);
}
}
(GetAllProducts () моего репозитория возвращает IEnumerable
Этот метод FunkyOrder должен работать, но это - как ObjectQuery - приведение возвращает NULL
Я могу использовать FunkyOrder только с ObjectQuery, потому что, похоже, это единственное, что поддерживает эти запросы "it.FieldName".
Если я поменяю обозначение - как - на Обычный актерский состав, я получу:
Unable to cast object of type 'WhereEnumerableIterator`1[MySecretNameSpace.Product]' to type 'System.Data.Objects.ObjectQuery`1[MySecretNameSpace.Product]'.
Есть ли способ заставить это работать, или я буду вынужден либо жить с сортировкой перед фильтрацией, либо написать гигантский переключатель с лямбда-выражениями для моей сортировки?