创建ext methd接受分隔值并在创建表达式时过滤分隔字符串,并将其转换为linq的lambda expr,其中

创建ext methd接受分隔值并在创建表达式时过滤分隔字符串,并将其转换为linq的lambda expr,其中,linq,dynamic,expression,filtering,Linq,Dynamic,Expression,Filtering,扩展方法: public static bool Contains3(this IQueryable<string> tobechecked, IEnumerable<string> value) { List<string> re = tobechecked.ToString().Split(',').ToList(); if (re.All(a => value.Contains(a))) return true;

扩展方法:

public static bool Contains3(this IQueryable<string> tobechecked, IEnumerable<string> value)
{
    List<string> re = tobechecked.ToString().Split(',').ToList();

    if (re.All(a => value.Contains(a)))
        return true;
    else
        return false;
}

private static MethodInfo ContainsNew = typeof(ExpressionBuilder).GetMethod("Contains3",
 BindingFlags.Public | BindingFlags.Static);

ParameterExpression param = Expression.Parameter(typeof(T), "t");

MemberExpression member = Expression.Property(param, filter.Field);

constant = Expression.Constant(constantvalue, member.Type);

vat WhereClause =Expression.Call(typeof(Enumerable), "Contains3", new[] { member.Type }, constant, member);
public static bool包含3(此IQueryable tobechecked,IEnumerable值)
{
List re=tobechecked.ToString().Split(',').ToList();
if(re.All(a=>value.Contains(a)))
返回true;
其他的
返回false;
}
私有静态MethodInfo ContainsNew=typeof(ExpressionBuilder).GetMethod(“Contains3”,
BindingFlags.Public | BindingFlags.Static);
ParameterExpression param=表达式参数(typeof(T),“T”);
MemberExpression member=Expression.Property(参数,filter.Field);
常量=表达式.constant(constantvalue,member.Type);
vat WhereClause=Expression.Call(typeof(Enumerable),“Contains3”,new[]{member.Type},常量,member);
这行代码将表达式转换为lambda表达式

Expression.Lambda<Func<T, bool>>(exp, param);

var actuals2 = gpsDbContext.entityname.AsQueryable().Where(WhereClause)
Expression.Lambda(exp,param);
var actuals2=gpsDbContext.entityname.AsQueryable().Where(Where子句)

irs throwin此exceptionextension方法无法转换为存储表达式