Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 将LambaExpression添加到IQueryable的实例 ParameterExpression参数=表达式参数(产品类型),“x”); MemberExpression Left=Expression.MakeMemberAccess(参数,typeof(Product).GetProperty(“名称”); ConstantExpression Right=表达式.常量(值,类型(字符串)); BinaryExpression=expression.Equal(左、右); LambdaExpression lambada=Expression.Lambda(表达式,参数);_Linq_Lambda - Fatal编程技术网

Linq 将LambaExpression添加到IQueryable的实例 ParameterExpression参数=表达式参数(产品类型),“x”); MemberExpression Left=Expression.MakeMemberAccess(参数,typeof(Product).GetProperty(“名称”); ConstantExpression Right=表达式.常量(值,类型(字符串)); BinaryExpression=expression.Equal(左、右); LambdaExpression lambada=Expression.Lambda(表达式,参数);

Linq 将LambaExpression添加到IQueryable的实例 ParameterExpression参数=表达式参数(产品类型),“x”); MemberExpression Left=Expression.MakeMemberAccess(参数,typeof(Product).GetProperty(“名称”); ConstantExpression Right=表达式.常量(值,类型(字符串)); BinaryExpression=expression.Equal(左、右); LambdaExpression lambada=Expression.Lambda(表达式,参数);,linq,lambda,Linq,Lambda,现在我如何将这个lambada添加到IQuerybale的实例中,比如说_query _query.Where(lambada.Compile()) 不要使用.Compile,它会将表达式转换为委托。使用表达式而不是委托过滤IQueryable: ParameterExpression parameter = Expression.Parameter(typeof(Product), "x"); MemberExpression Left = Expression.MakeMe

现在我如何将这个lambada添加到IQuerybale的实例中,比如说_query


_query.Where(lambada.Compile())

不要使用
.Compile
,它会将表达式转换为委托。使用表达式而不是委托过滤
IQueryable

 ParameterExpression parameter = Expression.Parameter(typeof(Product), "x");
        MemberExpression Left = Expression.MakeMemberAccess(parameter, typeof(Product).GetProperty("Name"));
        ConstantExpression Right = Expression.Constant(value, typeof(String));
        BinaryExpression expression = Expression.Equal(Left, Right);
        LambdaExpression lambada = Expression.Lambda<Func<Product, bool>>(expression, parameter);

我想您只需要更改
lambda的类型

_query = _query.Where(lambada);
ParameterExpression parameter = Expression.Parameter(typeof(Product), "x");
MemberExpression Left = Expression.MakeMemberAccess(parameter, typeof(Product).GetProperty("Name"));
ConstantExpression Right = Expression.Constant(value, typeof(String));
BinaryExpression expression = Expression.Equal(Left, Right);
Expression< Func< Product, bool > > lambda = Expression.Lambda<Func<Product, bool>>(expression, parameter);
List< Product > products = new List< Product >
{
    new Product { Name = "bar" }, 
    new Product { Name = "foo" }
};
IQueryable< Product > queryable = products.AsQueryable().Where( lambda );