Как я могу получить ИЛИ в моем предложении Где? - PullRequest
2 голосов
/ 12 июня 2009

Я создаю специальный запрос для отправки в SQL, выполняя следующие действия:

var data = from d in db.xxxx select d;
foreach (pattern in user_stuff)
   data = data.Where(d=>SqlMethods.Like(d.item,pattern)==true);

Проблема в том, что предложения WHERE объединяются AND. Мне нужно OR х

Есть идеи, как получить OR?

Ответы [ 2 ]

3 голосов
/ 12 июня 2009

Как насчет того, чтобы ответить на свой вопрос: PredicateBuilder

2 голосов
/ 12 июня 2009

Вам необходимо создать выражение для представления составного предиката OR, а затем передать его в Where:

var data = from d in db.xxxx select d;
Expression<Func<Data, bool>> predicate = null;
foreach (var pattern in user_stuff)
{
    Expression<Func<Data, bool>> newPredicate = d => SqlMethods.Like(d..item, pattern));
    if (predicate == null) predicate = newPredicate;
    else predicate = Expression.OrElse(predicate, newPredicate);
}
return data.Where(predicate);

РЕДАКТИРОВАТЬ: Это, вероятно, то, что делает PredicateBuilder, только намного беспорядочно:)

...