我有像这样的通用方法
public IList<T> Get(KendoGridFilterSort.FilterContainer filter)
{
List<T> list = null;
IQueryable<T> dbQuery = _entities.Set<T>();
list = dbQuery
.ToList<T>();
return list;
}
当使用特定对象初始化此方法的类时,我获得了完整的记录列表。 但我想在此方法中传递一些过滤器通用参数来相应地过滤记录。为此,我有类名KendoGridFilterSort.FilterContainer,其中包含所有带字段名称,运算符和值的过滤器 我想用这个泛型方法使用那个过滤器,我的问题是我无法使用 这个陈述例如
persons.Where(p => p.Name == name && p.Surname == surname).ToList();
那么我是否有可能在这个通用列表中应用我的过滤器?
答案 0 :(得分:1)
您应该强制T
类实现IEntity
接口与您想要filter
的属性:
public interfase IEntity
{
string Name {get;set;}
string Surname {get;set;}
}
public class Repository<T> where T : class, IEntity
{
public IList<T> Get(KendoGridFilterSort.FilterContainer filter)
{
return _entities.Set<T>().Where(x => x.Name == filter.Name && x.Surname == filter.Surname).ToList();
}
}
答案 1 :(得分:0)
您可以在使用IQueryable<T>
public IList<T> Get(Expression<Func<T, bool>> filter)
{
List<T> list = null;
IQueryable<T> dbQuery = _entities.Set<T>();
dbQuery = dbQuery.Where(filter);
list = dbQuery.ToList<T>();
return list;
}
虽然不清楚KendoGridFilterSort.FilterContainer
正在做什么