Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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
C# 需要帮助为Where子句创建表达式树吗_C#_Linq To Entities_Expression Trees - Fatal编程技术网

C# 需要帮助为Where子句创建表达式树吗

C# 需要帮助为Where子句创建表达式树吗,c#,linq-to-entities,expression-trees,C#,Linq To Entities,Expression Trees,我需要创建一个表达式树,我可以将它作为Where子句中的谓词参数传递给Linq to Enities查询 public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate); 用谷歌搜索出来 var paramExpr = Expression.P

我需要创建一个表达式树,我可以将它作为
Where
子句中的
谓词
参数传递给Linq to Enities查询

public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate);
用谷歌搜索出来

var paramExpr = Expression.Parameter(typeof(TSource), "src");
var memberExpr = (MemberExpression)property.Body;

List<Expression> arrayInits = new List<Expression>();

var arrExpr = Expression.Constant(((string)values[0]).Split(new char[] { ';' }));

MethodInfo containsMethod = typeof(ICollection<string>).GetMethod("Contains");

var containsExpression = Expression.Call(null, contains, arrExpr, memberExpr);
var containsLambda = Expression.Lambda<Func<TSource, bool>>(containsExpression, property.Parameters);
var-paramExpr=Expression.Parameter(typeof(TSource),“src”);
var memberExpr=(MemberExpression)property.Body;
List arrayInits=新列表();
var arrExpr=Expression.Constant((字符串)值[0]).Split(新字符[]{';'}));
MethodInfo containsMethod=typeof(ICollection).GetMethod(“Contains”);
var containsExpression=Expression.Call(null、contains、arrExpr、memberExpr);
var containsLambda=Expression.Lambda(containsExpression,property.Parameters);
而且它有效

公共静态表达式CreateContainsPression(T obj,字符串[]数组)
public static Expression<Func<T, bool>> CreateContainsExpression<T>(T obj, string[] array)
{
    var paramExpr = Expression.Parameter(typeof(T), "obj");
    var arrExpr = Expression.Constant(array);

    var colourPropExpr = Expression.Property(paramExpr, "Color");
    MethodInfo containsMethod = typeof(ICollection<string>).GetMethod("Contains");

    var containsExpr = Expression.Call(arrExpr, containsMethod, colourPropExpr);
    return Expression.Lambda<Func<T, bool>>(containsExpr, paramExpr);
}
{ var paramExpr=表达式参数(typeof(T),“obj”); var arrExpr=表达式常数(数组); var colorpropexpr=Expression.Property(参数xpr,“颜色”); MethodInfo containsMethod=typeof(ICollection).GetMethod(“Contains”); var containsExpr=Expression.Call(arrExpr、containsMethod、colorpropexpr); 返回表达式.Lambda(containsExpr,paramExpr); }
public static Expression<Func<T, bool>> CreateContainsExpression<T>(T obj, string[] array)
{
    var paramExpr = Expression.Parameter(typeof(T), "obj");
    var arrExpr = Expression.Constant(array);

    var colourPropExpr = Expression.Property(paramExpr, "Color");
    MethodInfo containsMethod = typeof(ICollection<string>).GetMethod("Contains");

    var containsExpr = Expression.Call(arrExpr, containsMethod, colourPropExpr);
    return Expression.Lambda<Func<T, bool>>(containsExpr, paramExpr);
}