2010-06-03 6 views
2

Je tente de créer une clause where dynamique à l'aide de l'API d'expression standard. Les expressions ci-dessus seront ultimement ajoutées à une clause where.Expression.OrElse, création dynamique d'une condition

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) 
); 

Je dois ajouter un tas de 'j'aime'.

Comment faire?

je reçois InvalidOperationException l'opérateur OrElse J'ai également essayé Expression.Or

Merci

Cordialement

Craig.

Répondre