2009-08-03 4 views
14

У меня есть класс (ClassA), который имеет свойство IEnumerable. Тогда у меня есть другой класс (ClassB), который имеет то же свойство. Они используют интерфейс (InterfaceA). КлассB - это в основном контейнерный класс для нескольких классов ClassA. Как реализовать свойство для ClassB.Как объединить несколько списков IEnumerable вместе

interface InterfaceA 
{ 
    IEnumerable<int> MyInts 
    { 
     get; 
    } 
} 

class ClassA : InterfaceA 
{ 
    public IEnumerable<int> MyInts 
    { 
     get; 
     private set; 
    } 
} 

class ClassB : InterfaceA 
{ 
    ClassA[] classAs = new ClassA[10]; 
    public IEnumerable<int> MyInts 
    { 
     get 
     { 
      //What goes here ? 
      classAs.SelectMany(classA => classA.MyInts); 
     } 

    } 
} 

Я попытался использовать оператор выбора LINQ, но это не сработает.

Редактировать: Похоже, я не выглядел достаточно тяжело. Ответ здесь в этом вопросе. How do I Aggregate multiple IEnumerables of T

Редактировать 2: Включите пример кода, который сработал для меня, если кому-то еще это понадобится.

ответ

20

Просто добавьте свой ответ, так что это не останется без ответа.

классAs.SelectMany (класс A => классA.MyInts);

Найдено this question.

3
 public IEnumerable<int> MyInts 
     { 
      get 
      { 
       foreach (ClassA c in classAs) 
       { 
        foreach (int i in c.MyInts) 
        { 
         yield return i; 
        } 
       } 
      } 

     }