web-dev-qa-db-ja.com

C#アイテムのX個の後にforeachループから抜け出す

私のforeachループでは、50個のアイテムの後に停止したいのですが、50番目のアイテムに到達したら、このforeachループから抜け出すにはどうすればよいですか?

ありがとう

foreach (ListViewItem lvi in listView.Items)
37
Jade M
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];
}
117
Hamish Smith

通常のforループを使用しないのはなぜですか?

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

RubenとPragmatrixが指摘したバグを解決するために更新されました。

24
sgriffinusa

または、foreachの代わりに通常のforループを使用します。 forループはわずかに高速です(ただし、非常にタイムクリティカルなコードを除き、違いに気付かないでしょう)。

6
Eric J.

これは動作するはずです。

int i = 1;
foreach (ListViewItem lvi in listView.Items) {
    ...
    if(++i == 50) break;
}
3
int count = 0;
foreach (ListViewItem lvi in listView.Items)
{
    if(++count > 50) break;
}
2
Chris Missal

breakを使用するだけです:

int cont = 0;
foreach (ListViewItem lvi in listView.Items) {
   if(cont==50) { //if listViewItem reach 50 break out.
      break; 
   }
   cont++;   //increment cont.
}
0
Caique Romero