2017-06-02 65 views
0

我有這樣如何應用where子句中的泛型類型列表在C#

public IList<T> Get(KendoGridFilterSort.FilterContainer filter) 
    { 
     List<T> list = null; 
     IQueryable<T> dbQuery = _entities.Set<T>(); 
     list = dbQuery 
     .ToList<T>(); 
     return list; 

    } 

當inititate類此方法,特定對象的我得到的記錄的完整列表的通用方法。 但我想在此方法中通過一些過濾器徹底參數來相應地過濾記錄。爲了這個,我有類名KendoGridFilterSort.FilterContainer包含所有過濾器字段名,經營者和值 我想使用這個泛型方法的過濾器,我的問題是我不能使用 這種說法例如

persons.Where(p => p.Name == name && p.Surname == surname).ToList(); 

那麼有沒有可能將我的過濾器應用到這個通用列表中?

+2

您需要向我們展示'KendoGridFil terSort.FilterContainer'。 – Enigmativity

回答

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(); 
    } 
} 
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在做什麼