Как получить положение ячейки массива при использовании foreach по всему массиву? - PullRequest
1 голос
/ 12 ноября 2009

Я все еще застрял с использованием массивов в классах, сгенерированных XSD, поскольку моя XML-схема слишком сложна для xsd2code, который создал генерируемые на основе генериков классы.

Есть ли какой-нибудь способ сказать номер ячейки массива при использовании foreach через него? Есть ли способ сделать это в LINQ?

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Вы, безусловно, можете сделать это в LINQ:

foreach (var item in Items.Select((elem, index) => new { Item = elem, Index = index }))
{
    DoStuff(item.Item, item.Index);
}
0 голосов
/ 12 ноября 2009

Я предполагаю, что под "номером ячейки" вы подразумеваете индекс текущего элемента в массиве.

Если это так, ответ - да.

Для цикла for вы можете объявить целочисленную переменную и увеличивать ее на каждой итерации для отслеживания индекса.

Например:

int index = 0;
foreach(var thing in things) {
    //...

    index++;
}

В LINQ вы можете вызывать перегрузки Select и Where, которые принимают 2-параметрические лямбды, например:

array.Select((elem, index) => whatever);
...