Comment combiner plusieurs listes IEnumerable ensemble
-
10-07-2019 - |
Question
J'ai une classe (ClassA) qui a une propriété IEnumerable. J'ai ensuite une autre classe (ClassB) qui a la même propriété. Ils partagent une interface (InterfaceA). La classe B est fondamentalement une classe de conteneur pour plusieurs classes. Comment implémenter la propriété pour 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);
}
}
}
J'ai essayé d'utiliser une instruction de sélection LINQ mais cela ne fonctionne pas.
Modifier: On dirait que je n'ai pas regardé assez fort. La réponse est ici dans cette question. Comment regrouper plusieurs éléments de l'Enumable
Modifier 2: Incluez l'exemple de code qui a fonctionné pour moi, au cas où quelqu'un d'autre en aurait besoin.
La solution
Ajoutez simplement ma réponse pour que cela ne reste pas sans réponse.
classAs.SelectMany (classA = > classA.MyInts);
Ce problème a été trouvé dans cette question .
Autres conseils
public IEnumerable<int> MyInts
{
get
{
foreach (ClassA c in classAs)
{
foreach (int i in c.MyInts)
{
yield return i;
}
}
}
}