Как объединить несколько списков IEnumerable вместе - PullRequest
14 голосов
/ 03 августа 2009

У меня есть класс (ClassA), который имеет свойство IEnumerable. Затем у меня есть другой класс (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, но это не сработало.

Edit: Похоже, я выглядел недостаточно усердно. Ответ здесь в этом вопросе. Как объединить несколько IEnumerables из T

Редактировать 2: Включите пример кода, который работал для меня, если кому-то еще это нужно.

Ответы [ 2 ]

20 голосов
/ 03 августа 2009

Просто добавляю мой ответ, чтобы не остаться без ответа.

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

Нашел от этот вопрос .

3 голосов
/ 03 августа 2009
        public IEnumerable<int> MyInts
        {
            get
            {
                foreach (ClassA c in classAs)
                {
                    foreach (int i in c.MyInts)
                    {
                        yield return i;
                    }
                }
            }

        }
...