C#循环限制为50次传球

时间:2009-02-11 22:14:14

标签: c# loops

如何将下面的循环限制为50,以便在到达第51个项目时停止?

foreach (ListViewItem lvi in listView.Items)
{

}

由于

12 个答案:

答案 0 :(得分:23)

使用Linq轻松

foreach (ListViewItem lvi in listView.Items.Take(50)) {

}

来自MSDN文档:

  

取<(Of<(TSource>)>)枚举   源和产量元素直到计数   元素已经产生或来源   不再包含任何元素。

     

如果count小于或等于   零,源不是枚举和   空的IEnumerable<(Of<(T>)>)是   返回。

答案 1 :(得分:16)

嗯,foreach可能不是最好的解决方案,但如果你必须:

int ctr = 0;
foreach (ListViewItem lvi in listView.Items) {
    ctr++;
    if (ctr == 50) break;

    // do code here

}

注意:for循环通常比使用foreach遍历集合更轻。

最好使用for循环:

// loop through collection to a max of 50 or the number of items
for(int i = 0; i < listView.Items.Count && i < 50; i++){
    listView.Items[i]; //access the current item

}

答案 2 :(得分:14)

foreach (ListViewItem lvi in listView.Items) {
  // do code here
  if (listView.Items.IndexOf(lvi) == 49)
    break;
}

或者因为它是列表视图项

foreach (ListViewItem lvi in listView.Items) {
  // do code here
  if (lvi.Index == 49) break;
}

使用Linq作为每LukeDuff

foreach (ListViewItem lvi in listView.Items.Take(50)) {
  // do code here
}

使用For循环按Atomiton

// loop through collection to a max of 50 or the number of items
for(int i = 0; i < listView.Items.Count && i < 50; i++){
    listView.Items[i]; //access the current item

}

答案 3 :(得分:7)

使用for循环。

for(int index = 0; index < collection.Count && index < 50; index++)
{
   collection[index];
}

答案 4 :(得分:5)

for(int index = 0, limit = Math.Min(50, collection.Count); index < limit; index++)
{
   collection[index];
}

答案 5 :(得分:3)

如果您仍想使用foreach循环,请尝试以下操作:

int counter = 0;
foreach (ListViewItem lvi in listView.Items) 
{
  counter++;
  if ( counter == 50 )
  {
   break;
  }
}

答案 6 :(得分:3)

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

答案 7 :(得分:1)

我会使用for循环作为查尔斯建议而不是使用索引检查的foreach。当您需要跟踪当前迭代时,意图更明显,因为使用了for循环。

for (int i = 0; i < listView.Items.Count && i < 50; ++i)
{
    //do something with listView.Items[i]
}

答案 8 :(得分:1)

int i = 50;
foreach(T t in TList)
{
   if(i-- <= 0) break;

   code;

   // or: i--; if(i<=0) break;
}

答案 9 :(得分:1)

for循环可以工作,但您仍然可以像这样设置一个名为lvi的ListViewItem。

int maxItems = listViewItems.Count > 50 ? 50 : listViewItems.Count;
for(int counter = 0; counter < maxItems; counter ++)
{ 
    ListViewItem lvi = listView.Items[counter];

    // Rest of your code here will stile work

}

答案 10 :(得分:1)

使用LINQ,可以实现为:

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

如果小于n,则Take(n)返回前n个元素或所有元素。

答案 11 :(得分:0)

人们已经提供了大量的例子,在这个特定情况下,由于ListView.Items是一个索引集合,旧的for循环可能是最好的。如果它像IEnumerable那样你不能使用Items [i]那么你必须像其他带有外部计数器变量的例子一样。