у меня есть функция:
private IEnumerable MatchesKeyword(IEnumerable list, String keyword)
{
...snip...
}
, которая прямо сейчас выполняет запрос LINQ:
private IEnumerable MatchesKeyword(IEnumerable list, String keyword)
{
return list.Where(item => item.Name.ContainsText(keyword)
|| item.Description.ContainsText(keyword)
...snip...
);
}
Этот код работает достаточно хорошо.
Но мне нужно преобразовать его , чтобы использовать PredicateBuilder
:
private IEnumerable MatchesKeyword(IEnumerable list, String keyword)
{
var predicate = PredicateBuilder.False();
predicate = predicate.Or(item => item.Name.ContainsText(keyword)
|| item.Description.ContainsText(keyword)
...snip...
);
return list.Where(predicate);
}
Что, как ни странно, не компилируется. Строка с ошибкой:
return list.Where(predicate);
Вы можете выбрать ошибки:
В чем проблема? IEnumerable
входит, IEnumerable
выходит.
Честно говоря, я прочитал страницу на PredicateBuilder
и не понимаю ничего из этого.
Подсказка из , почему мне нужно перейти на PredicateBuilder
:
private IEnumerable MatchesKeyword(IEnumerable list, String keyword)
{
var predicate = PredicateBuilder.False();
predicate = predicate.Or(item => item.Name.ContainsText(keyword)
|| item.Description.ContainsText(keyword)
...snip...
);
DateTime dt = TryStrToDate(keyword);
if (dt)
predicate = predicate.Or(item => item.PromotionDate == dt);
return list.Where(predicate);
}
... не то, что мне нужна причина, проблема, практический пример , или исследовательская попытка задать вопрос.