Cri*_*scu 9 .net c# linq lazy-evaluation infinite-sequence
给定一个有限的元素列表,我如何创建一个(懒惰评估,谢谢LINQ!)无限列表,只是不断迭代我的初始列表?
如果是初始列表{1, 2, 3},我想要返回新列表{1, 2, 3, 1, 2, 3, 1, ...}
Rya*_*ner 17
yield return 虽然它并不真正需要LINQ,但它是一个非常方便的运算符.
IEnumerable<int> GetInfiniteSeries(IEnumerable<int> items) {
while (true) {
foreach (var item in items) {
yield return item;
}
}
}
Run Code Online (Sandbox Code Playgroud)
IEnumerable<T> Infinite(this IEnumerable<T> ienum)
{
List<T> list = ienum.ToList();
while (true)
foreach(var t in list)
yield return t;
}
foreach(int i in Enumerable.Range(1,3).Infinite())
Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |