在 foreach 循环 C# 中向前跳过
本文关键字:foreach 循环 | 更新日期: 2023-09-27 18:31:14
如果我有一个 foreach 循环,它接受一大堆地址并通过它们循环,有没有办法跳过前 500 个条目,
像这样:
foreach(var row in addresses)
{
string strAddr = row.ADDRESS + "," + row.CITY + "," + row.ST;
System.Threading.Thread.Skip(500)
}
我知道 skip 不存在,但我可以使用什么来做同样的事情吗?
可以使用具有有意义名称的方法:
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))
{
// ...
}
您可以使用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;
}
直接使用 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++);
一个可行且快速的解决方案是使用 LINQ Skip
方法从集合的第 500 个元素开始循环访问集合的子集。
foreach (var row in addresses.Skip(500))
{
// do your stuff...
}