如何将多个IEnumerable列表组合在一起

时间:2009-08-03 15:01:23

标签: c# linq ienumerable

我有一个具有IEnumerable属性的类(ClassA)。然后我有另一个具有相同属性的类(ClassB)。他们正在共享一个接口(InterfaceA)。 ClassB基本上是多个ClassA的容器类。如何实现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);
        }

    }
}

我尝试使用LINQ select语句,但这不起作用。

编辑: 看起来我看起来不够努力。答案就在这个问题上。 How do I Aggregate multiple IEnumerables of T

编辑2: 包括适合我的示例代码,包括其他人需要的代码。

2 个答案:

答案 0 :(得分:20)

只需添加我的答案,所以这不会得不到答案。

classAs.SelectMany(classA =&gt; classA.MyInts);

this question找到了这个。

答案 1 :(得分:3)

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

        }