Class DB_Class {
public int a { get; set; }
public long b { get; set; }
protected string c { get; set; }
protected DateTime F { get; set; }
}
假设有一个类似上面的类,我想在该类中搜索并返回一个IQueryable结果,因为我想稍后再订购它。
我需要一个像下面这样的函数---但是下面的函数不适用于“整数”或“日期时间”,只有字符串...(因为包含函数)。我需要一个可以采用任何类型的更通用的函数 - 有点像Python一样。
也许我需要两个模板???
public static IQueryable<T> WhereContains<T>(this IQueryable<T> query, string propertyName, string contains)
{
var parameter = Expression.Parameter(typeof(T), "type");
var propertyExpression = Expression.Property(parameter, propertyName);
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(contains, typeof(string));
var containsExpression = Expression.Call(propertyExpression, method, someValue);
return query.Where(Expression.Lambda<Func<T, bool>>(containsExpression, parameter));
}
我希望能够像这样打电话:
var table = WhereContains<typeoftable>(table, "a", "12");
// or
var table = WhereContains<typeoftable>(table, "c", "Jackso");
// or
var table = WhereContains<typeoftable>(table, "F", "11/23/201");