C# Убегают из цикла foreach после X количества объектов

Набор это было, и оглушение. Edsger Dijkstra (с некоторой справкой от C.A.R. Hoare) мало Структурного программирования черного списка и particlarly эссе, названное "На Нашей Неспособности Сделать Много".

37
задан Jade M 11 August 2009 в 22:36
поделиться

5 ответов

int processed = 0;
foreach(ListViewItem lvi in listView.Items)
{
   //do stuff
   if (++processed == 50) break;
}

или используйте LINQ

foreach( ListViewItem lvi in listView.Items.Cast<ListViewItem>().Take(50))
{
    //do stuff
}

, или просто используйте обычный цикл for (как предложено @sgriffinusa и @Eric J.)

for(int i = 0; i < 50 && i < listView.Items.Count; i++)
{
    ListViewItem lvi = listView.Items[i];
}
118
ответ дан 27 November 2019 в 04:01
поделиться

Почему бы просто не использовать обычный цикл for?

for(int i = 0; i < 50 && i < listView.Items.Count; i++)
{
    ListViewItem lvi = listView.Items[i];
}

Обновлено для устранения ошибки, указанной Рубеном и Pragmatrix.

24
ответ дан 27 November 2019 в 04:01
поделиться

Или просто используйте обычный цикл for вместо foreach. Цикл for работает немного быстрее (хотя вы не заметите разницы, кроме кода, который очень важен по времени).

6
ответ дан 27 November 2019 в 04:01
поделиться

Это должно сработать.

int i = 1;
foreach (ListViewItem lvi in listView.Items) {
    ...
    if(++i == 50) break;
}
3
ответ дан 27 November 2019 в 04:01
поделиться
int count = 0;
foreach (ListViewItem lvi in listView.Items)
{
    if(++count > 50) break;
}
2
ответ дан 27 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: