私のforeachループでは、50個のアイテムの後に停止したいのですが、50番目のアイテムに到達したら、このforeachループから抜け出すにはどうすればよいですか?
ありがとう
foreach (ListViewItem lvi in listView.Items)
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];
}
通常のforループを使用しないのはなぜですか?
for(int i = 0; i < 50 && i < listView.Items.Count; i++)
{
ListViewItem lvi = listView.Items[i];
}
RubenとPragmatrixが指摘したバグを解決するために更新されました。
または、foreachの代わりに通常のforループを使用します。 forループはわずかに高速です(ただし、非常にタイムクリティカルなコードを除き、違いに気付かないでしょう)。
これは動作するはずです。
int i = 1;
foreach (ListViewItem lvi in listView.Items) {
...
if(++i == 50) break;
}
int count = 0;
foreach (ListViewItem lvi in listView.Items)
{
if(++count > 50) break;
}
breakを使用するだけです:
int cont = 0;
foreach (ListViewItem lvi in listView.Items) {
if(cont==50) { //if listViewItem reach 50 break out.
break;
}
cont++; //increment cont.
}