Come combinare più elenchi IEnumerable insieme
-
10-07-2019 - |
Domanda
Ho una classe (ClassA) che ha una proprietà IEnumerable. Ho quindi un'altra classe (ClassB) che ha la stessa proprietà. Stanno condividendo un'interfaccia (InterfaceA). La ClassB è sostanzialmente una classe contenitore per più ClassA. Come implementare la proprietà per ClassB.
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);
}
}
}
Ho provato a usare un'istruzione select LINQ ma non funziona.
Modifica: Sembra che non mi sia sembrato abbastanza difficile. La risposta è qui in questa domanda. Come aggregare più IEnumerables di T
Modifica 2: Includi il codice di esempio che ha funzionato per me, nel caso in cui chiunque altro ne abbia bisogno.
Soluzione
Sto solo aggiungendo la mia risposta, in modo che non rimanga senza risposta.
classAs.SelectMany (classA = > classA.MyInts);
Trovato da questa domanda .
Altri suggerimenti
public IEnumerable<int> MyInts
{
get
{
foreach (ClassA c in classAs)
{
foreach (int i in c.MyInts)
{
yield return i;
}
}
}
}