Вы можете написать метод, который сделает круг IEnumerable<T>
, а затем использовать его.
public static IEnumerable<T> ToCircular<T>(this IEnumerable<T> source)
{
while(true)
{
foreach(var x in source) yield return x;
}
}
Затем вы можете сделать следующее
List<string> list = new List<string>();
list.Add("Duck1");
list.Add("Duck2");
list.Add("Duck3");
list.Add("Duck4");
list.Add("Duck5");
var list2 = list.ToCircular().Skip(4).Take(3);
foreach(var a in list2){
Console.WriteLine(a);
}
Но будьте осторожны, так как это приводит к бесконечному l oop, и вы захотите ограничить его при использовании с Take
или TakeWhile
или First
.