在foreach循环中跳过c#

时间:2014-11-19 15:10:02

标签: c# asp.net-mvc foreach

如果我有一个foreach循环,需要一大堆地址并循环遍历它们,有没有办法可以跳过前500个条目,

类似的东西:

foreach(var row in addresses)
{
  string strAddr = row.ADDRESS + "," + row.CITY + "," + row.ST;
  System.Threading.Thread.Skip(500)
}

我知道跳过不存在,但有什么我可以用来做同样的事情吗?

4 个答案:

答案 0 :(得分:5)

您可以使用名称有意义的method

foreach(var row in addresses.Skip(500))
{
    // ...
}

您需要添加using System.Linq;,因为它是LINQ扩展方法。

如果addresses的类型未实现通用IEnumerable<T>界面,则可以使用Cast<T>。例如(假设类型为Address):

foreach(var row in addresses.Cast<Address>().Skip(500))
{
    // ...
}

答案 1 :(得分:2)

您可以使用Skip扩展名方法:

foreach(var row in addresses.Skip(500))
{
    string strAddr = row.ADDRESS + "," + row.CITY + "," + row.ST;
}

或者,如果addresses只是一个数组或列表:

for (int i = 500 ; i < addresses.Count ; i++) // assuming addresses is a List<T>
{
    var row = addresses[i];
    string strAddr = row.ADDRESS + "," + row.CITY + "," + row.ST;
}

答案 2 :(得分:1)

直接使用Enumerator界面:http://msdn.microsoft.com/en-us/library/system.collections.ienumerator(v=vs.110).aspx

var enumerator = addresses.GetEnumerator();
for (var i = 0; i < 300 && enumerator.MoveNext(); i++);

答案 3 :(得分:1)

一个可行且快速的解决方案是使用LINQ Skip方法从集合的第500个元素开始迭代集合的子集。

foreach (var row in addresses.Skip(500))
{
   // do your stuff...
}