Как я могу перебирать несколько IEnumerable одновременно

Предположим, у меня есть два (или более) IEnumerable со многими элементами. Каждый IEnumerable имеет другой тип T . Списки могут быть очень длинными, и их не следует загружать в память полностью.

IEnumerable ints = getManyInts();
IEnumerable strings = getSomeStrings();
IEnumerable dates = getSomeDates();

Я хочу выполнить итерацию по этим спискам и получить элемент, содержащий один int, одну строку и одно DateTime для каждого шага до конца. был достигнут самый длинный или самый короткий список. Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение?

Предположим, у меня есть два (или более) IEnumerable со многими элементами. Каждый IEnumerable имеет другой тип T . Списки могут быть очень длинными, и их не следует загружать в память полностью.

IEnumerable ints = getManyInts();
IEnumerable strings = getSomeStrings();
IEnumerable dates = getSomeDates();

Я хочу выполнить итерацию по этим спискам и получить элемент, содержащий один int, одну строку и одно DateTime для каждого шага до конца. был достигнут самый длинный или самый короткий список. Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение?

Предположим, у меня есть два (или более) IEnumerable со многими элементами. Каждый IEnumerable имеет другой тип T . Списки могут быть очень длинными, и их не следует загружать в память полностью.

IEnumerable ints = getManyInts();
IEnumerable strings = getSomeStrings();
IEnumerable dates = getSomeDates();

Я хочу выполнить итерацию по этим спискам и получить элемент, содержащий один int, одну строку и одно DateTime для каждого шага до конца. был достигнут самый длинный или самый короткий список. Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение? Списки могут быть очень длинными, и их не следует загружать в память полностью.

IEnumerable ints = getManyInts();
IEnumerable strings = getSomeStrings();
IEnumerable dates = getSomeDates();

Я хочу выполнить итерацию по этим спискам и получить элемент, содержащий один int, одну строку и одно DateTime для каждого шага до конца. был достигнут самый длинный или самый короткий список. Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение? Списки могут быть очень длинными, и их не следует загружать в память полностью.

IEnumerable ints = getManyInts();
IEnumerable strings = getSomeStrings();
IEnumerable dates = getSomeDates();

Я хочу выполнить итерацию по этим спискам и получить элемент, содержащий один int, одну строку и одно DateTime для каждого шага до конца. был достигнут самый длинный или самый короткий список. Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение? Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение? Оба случая должны поддерживаться (bool param самый длинный или самый короткий или около того). Для каждого элемента, недоступного в более коротких списках (поскольку конец уже достигнут), я бы ожидал значений по умолчанию.

for(Tuple item in 
    Foo.Combine(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}

Можно ли сделать это с помощью linq, используя отложенное выполнение? Я знаю решение, использующее IEnumerators непосредственно в сочетании с доходностью. См. Как я могу перебрать два IEnumerable одновременно в .NET 2

5
задан Community 23 May 2017 в 11:47
поделиться