Как выполнить итерацию цикла foreach между индексами 40-60? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть простой вопрос, на который я не могу найти точный ответ, когда я в Google.

Как мне перебрать foreach loop между индексами 40-60 и получить значения для индексов?

List<int> list1 = new List<int>();
for (int i = 0; i < 100; i++)
{
    list1.Add(i);
}
foreach (var i in list1) 
{
    //How to iterate between index: 40 to 60 ?
}

Ответы [ 4 ]

3 голосов
/ 10 апреля 2020

Самый простой подход - использовать обычное for l oop:

for (int i = 40; i < 60; ++i)
{
    int value = list1[i];
    // Do something with the value
}

Примечание - если вы хотите получить значение и для индекса 60 (т. Е. Диапазон включительно) , вы должны использовать оператор <= вместо <.

1 голос
/ 10 апреля 2020

Если вы действительно хотите использовать foreach, тогда вам нужно написать это

List<int> list1 = new List<int>();
foreach(int i in Enumerable.Range(40, 20))
{
    list1.Add(i);
}

Но, если вам не хватает более подробной информации о вашем запросе на использование foreach, тогда я согласен использовать стандарт для -l oop

1 голос
/ 10 апреля 2020

Foreach l oop не использует индекс для обхода массива или коллекции. Они используют перечислитель в IEnumerable. Этот ответ здесь имеет отличное объяснение этого.

Если вы хотите, вы можете добавить int перед foreach l oop и увеличить в пределах l oop, но это все, что вы сможет сделать. Я бы посоветовал вам предварительно отфильтровать список list1, а затем использовать его в foreach l oop.

0 голосов
/ 10 апреля 2020

Помимо других более подходящих ответов (например, просто используйте for l oop), вот решение, которое использует перегрузку .Where(), которая предоставляет индекс элемента в качестве параметра для предикат:

foreach (var i in list1.Where((x, index) => index >= 40 && index <= 60))
{
    //How to iterate between index: 40 to 60 ?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...