2009-08-03 19 views
14

Mam klasy (ClassA), który ma właściwość IEnumerable. Następnie mam inną klasę (ClassB), która ma tę samą właściwość. Dzielą interfejs (InterfaceA). ClassB to w zasadzie klasa kontenerów dla wielu klas ClassA. Jak zaimplementować właściwość dla klasy B.Jak połączyć wiele list IEnumerable razem

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); 
     } 

    } 
} 

Próbowałem użyć instrukcji select LINQ, ale to nie działa.

Edytuj: Wygląda na to, że nie wyglądam wystarczająco mocno. Odpowiedź jest tutaj w tym pytaniu. How do I Aggregate multiple IEnumerables of T

Edytuj 2: Dodaj przykładowy kod, który sprawił, że ktoś go potrzebuje.

Odpowiedz

20

Po prostu dodając moją odpowiedź, więc to nie pozostaje bez odpowiedzi.

classAs.SelectMany (classA => classA.MyInts);

Znaleziono z this question.

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

     } 
Powiązane problemy