inf*_*rno 75 c# ienumerable iterator
我正在考虑为我的自定义集合(树)实现IEnumerable,所以我可以使用foreach来遍历我的树.但据我所知,foreach总是从集合的第一个元素开始.我想选择foreach从哪个元素开始.有可能以某种方式改变foreach开始的元素吗?
Moa*_*Plz 140
是.请执行下列操作:
Collection<string> myCollection = new Collection<string>;
foreach (string curString in myCollection.Skip(3))
//Dostuff
Run Code Online (Sandbox Code Playgroud)
Skip是一个IEnumerable函数,跳过从当前索引开始指定的许多函数.在另一方面,如果你想使用仅前三个你可以使用.Take:
foreach (string curString in myCollection.Take(3))
Run Code Online (Sandbox Code Playgroud)
这些甚至可以配对在一起,所以如果您只想要4-6项,您可以这样做:
foreach (string curString in myCollection.Skip(3).Take(3))
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 20
Skip为此,最简单的方法是在LINQ to Objects中使用该方法,以跳过给定数量的元素:
foreach (var value in sequence.Skip(1)) // Skips just one value
{
...
}
Run Code Online (Sandbox Code Playgroud)
显然只是为任何其他值更改1以跳过不同数量的元素...
同样,您可以使用Take来限制返回的元素数量.
您可以在我的Edulinq博客系列中阅读有关这两者(以及相关SkipWhile和TakeWhile方法)的更多信息.
您可以使用Enumerable.Skip跳过某些元素,并从那里开始.
例如:
foreach(item in theTree.Skip(9)) // Skips the first 9 items
{
// Do something
Run Code Online (Sandbox Code Playgroud)
但是,如果您正在编写树,则可能需要在树项本身上提供一个成员,该成员将返回一个IEnumerable<T>将从那里枚举的新成员.从长远来看,这可能会更有用.
| 归档时间: |
|
| 查看次数: |
52189 次 |
| 最近记录: |