2011-12-27 2 views
2

У меня есть класс, который содержит общий словарь:Разоблачения защищенной коллекции для LINQ запросов

protected Dictionary<K,T> Data { get; set;} 

Я хочу, чтобы позволить клиентам этого класса для выполнения запросов LINQ без возврата словаря. Я смотрел на AsQueryable(), но это, похоже, не делает того, что я хочу.

Пример кода, который я хотел бы написать бы:

typeRepo.Query().Where(x => x.name == "wire") 

ответ

2

Кажется, что словарь держит модель (T) своим ключом (K). Код, который вам нужен, это:

public IQueryable<T> Query 
{ 
    get { return Data.Values.AsQueryable(); } 
} 
2

Просто добавьте общественную собственность как то:

public IEnumerable<KeyValuePair<K,T>> Query 
{ 
    get { return Data.AsEnumerable(); } 
} 

и он должен работать, как вы ожидаете.