Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq Expression.OrElse,动态创建条件_Linq_Dynamic - Fatal编程技术网

Linq Expression.OrElse,动态创建条件

Linq Expression.OrElse,动态创建条件,linq,dynamic,Linq,Dynamic,我试图使用标准表达式API创建一个动态where子句 var query = ( from p in Parties orderby p.PartyId orderby p.FullName select p ).AsQueryable(); Expression<Func<Party, bool>> @fn = (p) => SqlMeth

我试图使用标准表达式API创建一个动态where子句

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)
 );
var查询=(
来自缔约方的p
orderby p.PartyId
orderby p.FullName
选择p
).AsQueryable();
表达式@fn=(p)=>SqlMethods.Like(p.FullName,“%smith%”)| | SqlMethods.Like(p.Person.FirstName,“%smith%”);
表达式@sn=(p)=>SqlMethods.Like(p.Person.FirstName,words[0]);
ParameterExpression pe=表达式参数(类型为(一方),“p”);
表达式orelse=表达式orelse(
λ表达式(@fn,pe),
表达式.Lambda(@sn,pe)
);
上面的表达式最终将添加到where子句中。 我需要添加一堆“喜欢”

我该怎么做

我在操作员OrElse上得到InvalidOperationException 我也尝试了
Expression.Or

谢谢

问候


Craig.

您签出PredicateBuilder了吗

它可以使为where子句动态创建表达式变得更加容易