Reputation: 1605
I have a class (ClassA) that has a IEnumerable property. I then has another class (ClassB) that has the same property. They are sharing an interface (InterfaceA). The ClassB is basically a container class for multiple ClassA's. How to I implement the property for 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);
}
}
}
I tried using a LINQ select statement but that doesn't work.
Edit: Looks like I didn't look hard enough. The answer is here in this question. How do I Aggregate multiple IEnumerables of T
Edit 2: Include the example code that worked for me, incase anyone else needs it.
Upvotes: 14
Views: 9241
Reputation: 1605
Just adding my answer, so this doesn't go unanswered.
classAs.SelectMany(classA => classA.MyInts);
Found this from this question.
Upvotes: 20
Reputation: 74166
public IEnumerable<int> MyInts
{
get
{
foreach (ClassA c in classAs)
{
foreach (int i in c.MyInts)
{
yield return i;
}
}
}
}
Upvotes: 3