2010-06-03 79 views
2

我正在嘗試使用標準表達式API創建動態where子句。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否則容易 我也曾嘗試Expression.Or

感謝

問候

克雷格。

回答