2013-04-08 1 views
3

У меня есть IEnumerable интерфейс:интерфейс объявлен как IEnumerable, но не могут быть использованы как таковые

public interface IBrands: IEnumerable<Ibrand> 

и ее создании экземпляра:

public class Brands: IBrands 
{ 
    public Brands() 
    { 
     _brandsDic= new Dictionary<int, IBrand>(); 
    } 
} 

Как я использовал Linq для извлечь некоторые данные в другом классе, у меня было чтобы возвратить некоторый IEnumerable:

public IEnumerable<IBrand> GetCarsBrands() 
{ 
    return _carsDic.SelectMany(r => r.Value.Brands).ToList(); 
} 

... но хотел бы вместо этого вернуть непосредственно IBrands. Знаете ли вы, как? Он жалуется на литье IBrands в IEnumerable, если я попытаюсь это сделать.

Спасибо!

+1

Проверьте, что 'SelectMany' возвращается, это может быть' IEnumerable > '. –

+0

Можете ли вы показать точное сообщение об ошибке? И что такое объявление '_carsDic'? –

+0

Ошибка: «Невозможно преобразовать тип выражения» SystemC.Collections.Generic.List ', чтобы вернуть тип' Interfaces.IBrands '" – goul

ответ

3

IBrands - это IEnumerable<IBrand>, но не наоборот. Поэтому вы не можете вернуть IEnumerable<IBrand> в качестве IBrands.

В зависимости от того, что представляет собой Бренды, вы можете создать еще один экземпляр Brands.

return new Brands(_carsDic.Values); 
Смежные вопросы