C#在X个项目之后中断foreach循环

Jad*_*e M 37 c# foreach

在我的foreach循环中,我想在50个项目后停止,当我到达第50个项目时,你将如何突破这个foreach循环?

谢谢

foreach (ListViewItem lvi in listView.Items)
Run Code Online (Sandbox Code Playgroud)

Ham*_*ith 118

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

或使用LINQ

foreach( ListViewItem lvi in listView.Items.Cast<ListViewItem>().Take(50))
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

或者只是使用常规for循环(由@sgriffinusa和@Eric J.建议)

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


sgr*_*usa 24

为什么不使用常规for循环?

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

更新以解决Ruben和Pragmatrix指出的错误.

  • if(listView.Items.Count <50)抛出新的OutOfRangeException(); (4认同)

Eri*_* J. 6

或者只使用常规for循环而不是foreach.for循环稍微快一些(尽管你不会注意到差异,除非是非常时间的关键代码).