2009-08-03 7 views
14

Tengo una clase (Clase A) que tiene una propiedad IEnumerable. Luego tengo otra clase (ClassB) que tiene la misma propiedad. Están compartiendo una interfaz (InterfaceA). El ClassB es básicamente una clase de contenedor para múltiples ClassA. Cómo implementar la propiedad para ClassB.Cómo combinar varias listas de IEnumerable juntas

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

    } 
} 

He intentado usar una instrucción de selección LINQ pero eso no funciona.

Editar: Parece que no me veía lo suficientemente duro. La respuesta está aquí en esta pregunta. How do I Aggregate multiple IEnumerables of T

Edición 2: Incluir el código de ejemplo que trabajó para mí, en caso que nadie más lo necesita.

Respuesta

20

Agregando mi respuesta, por lo tanto, esto no queda sin respuesta.

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

Encontrado esto a partir del this question.

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

     } 
Cuestiones relacionadas