2010-06-03 27 views
2

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

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

Благодарности

С уважением

Крейга.

ответ

Смежные вопросы