Как объединить коллекцию коллекций в Linq

Я хотел бы иметь возможность слияния IEnumerable<IEnumerable<T>> в IEnumerable<T> (т.е. объединить все отдельные коллекции в один). Операторы Union применимы только к двум коллекциям. Любая идея?

Ответ 1

Попробуйте

var it = GetTheNestedCase();
return it.SelectMany(x => x);

SelectMany - это преобразование LINQ, которое по существу говорит: "Для каждого элемента в коллекции возвращают элементы коллекции". Он превратит один элемент во многие (следовательно, SelectMany). Это отлично подходит для разбивки коллекций коллекций в плоский список.

Ответ 2

var lists = GetTheNestedCase();
return
    from list in lists
    from element in list
    select element;

- это еще один способ сделать это, используя синтаксис выражения запроса С# 3.0.