如果我有一个foreach循环,需要一大堆地址并循环遍历它们,有没有办法可以跳过前500个条目,
类似的东西:
foreach(var row in addresses)
{
string strAddr = row.ADDRESS + "," + row.CITY + "," + row.ST;
System.Threading.Thread.Skip(500)
}
我知道跳过不存在,但有什么我可以用来做同样的事情吗?
答案 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...
}