Expression.OrElse, динамически создающее условие - PullRequest
2 голосов
/ 03 июня 2010

Я пытаюсь создать динамическое предложение where, используя стандартное выражение API.

var query = (
            from p in Parties
                orderby p.PartyId
                orderby p.FullName
                select p
).AsQueryable();


 Expression<Func<Party, bool>> @fn = (p) => SqlMethods.Like(p.FullName, "%smith%") || SqlMethods.Like(p.Person.FirstName, "%smith%");
 Expression<Func<Party, bool>> @sn = (p) => SqlMethods.Like(p.Person.FirstName, words[0]);

 ParameterExpression pe = Expression.Parameter(typeof(Party), "p");
 Expression orelse = Expression.OrElse(
  Expression.Lambda(@fn, pe),
  Expression.Lambda(@sn, pe)
 );

Выражения, приведенные выше, в конечном итоге будут добавлены в предложение where. Мне нужно добавить кучу лайков.

Как мне это сделать?

Я получаю InvalidOperationException на оператора OrElse Я также пытался Expression.Or

Спасибо

Привет

Craig.

1 Ответ

1 голос
/ 03 июня 2010

Вы уже проверили PredicateBuilder?

http://www.albahari.com/nutshell/predicatebuilder.aspx

Это может значительно упростить динамическое создание выражений для операторов where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...