反思,在课堂上搜索字符串和整数

时间:2013-12-16 19:59:46

标签: c# class reflection system.reflection

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");

0 个答案:

没有答案