public static T ElementAtCycle <T>(this IEnumerable <T> source, int index, int count) { index = StdUtils.CycleIndex(index, count); if (source is IList <T> list) { return(list[index]); } return(source.ElementAt(index)); }
public static T ElementAtCycle <T>(this ICollection <T> source, int index) { index = StdUtils.CycleIndex(index, source.Count); if (source is IList <T> list) { return(list[index]); } return(source.ElementAt(index)); }