Ответ 1
А; в вашем списке используются методы расширения IEnumerable<T>
(а не IQueryable<T>
) - попробуйте:
var streetList = from street in streetData.AsQueryable().Where(predicate)
select street;
Я пытаюсь использовать PredicateBuilder, как описано здесь - http://www.albahari.com/nutshell/predicatebuilder.aspx
Следующий код
var predicate = PredicateBuilder.False<StreetDTO>();
predicate = predicate.Or(p => p.Locality.Contains(criteria.Locality));
predicate = predicate.Or(p => p.Name.Contains(criteria.Name));
predicate = predicate.Or(p => p.Town.Contains(criteria.Town));
List<StreetDTO> streetData = StreetData.Instance();
var streetList = from street in streetData.Where(predicate)
select street;
насколько я вижу, это должно работать, в соответствии с примером
var newKids = Product.ContainsInDescription ("BlackBerry", "iPhone");
var classics = Product.ContainsInDescription ("Nokia", "Ericsson")
.And (Product.IsSelling());
var query =
from p in Data.Products.Where (newKids.Or (classics))
select p;
но все, что я получаю, это
Ошибка 1 Аргументы типа для метода "System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable, System.Func) 'не может быть выведенных из использования. Пытаться задание аргументов типа в явном виде.
Я пытаюсь получить некоторое понимание в LINQ 'on-the-job', поэтому извиняюсь, если это простой вопрос.
А; в вашем списке используются методы расширения IEnumerable<T>
(а не IQueryable<T>
) - попробуйте:
var streetList = from street in streetData.AsQueryable().Where(predicate)
select street;
Попробуйте выполнить компиляцию вашего предиката:
var streetList = from street in streetData.Where(predicate.Compile())
select street;