У меня есть: -
IEnumerable<IEnumerable<T>> items;
и я хотел бы создать: -
IEnumerable<IEnumerable<T>> results;
где первый элемент в «результатах» - это IEnumerable первого элемента каждого из IEnumerables из «items», второй элемент в «results» является IEnumerable второго элемента каждого из «items» и т. д.
IEnumerables не обязательно одинаковой длины. Если некоторые из IEnumerables в элементах не имеют элемента по определенному индексу, то я d ожидать, что соответствующий IEnumerable в результатах будет содержать меньше элементов.
Например: -
items = { "1", "2", "3", "4" } , { "a", "b", "c" };
results = { "1", "a" } , { "2", "b" }, { "3", "c" }, { "4" };
Изменить: Другой пример (запрошен в комментариях): -
items = { "1", "2", "3", "4" } , { "a", "b", "c" }, { "p", "q", "r", "s", "t" };
results = { "1", "a", "p" } , { "2", "b", "q" }, { "3", "c", "r" }, { "4", "s" }, { "t" };
Я не знаю заранее, сколько там последовательностей , ни сколько элементов в каждой последовательности. У меня может быть 1000 последовательностей с 1000000 элементов в каждой, и мне могут понадобиться только первые ~ 10, поэтому я хотел бы использовать (ленивое) перечисление исходных последовательностей, если можно. В частности, я не хочу создавать новую структуру данных, если могу помочь.
Есть ли встроенный метод (похожий на IEnumerable.Zip), который может это сделать?
Есть ли другой способ?