I’ve just made another tiny addition to my extension method class / project, adding a small, but maybe useful method:
/// <summary> /// Repeats this IEnumerable a given number of times /// </summary> /// <param name="enumerable">this IEnumerable</param> /// <param name="times">number of times to repeat this IEnumerable</param> /// <returns>IEnumerable</returns> public static IEnumerable<T> Repeated<T>(this IEnumerable<T> enumerable, int times) { if (times < 1) { yield break; } for (int i = 0; i < times; i++) { foreach (T oneObject in enumerable) { yield return oneObject; } } }
This is how to use it to consume an IEnumerable<T> multiple times:
var range = Enumerable.Range(1, 5); foreach (var i in range.Repeated(5)) { // doing something with i, which will be the sequence // from 1 to 5, repeated 5 times }
It’s not a big deal, but maybe it’s helpful anyway. Btw, the source code is updated, too.