using System; using System.Linq; using System.Collections.Generic; public static class Test { public static IEnumerable Last(this IEnumerable source, int n) { using(var it = source.GetEnumerator()) { var buffer = new Queue(); while (buffer.Count < n && it.MoveNext()) buffer.Enqueue(it.Current); while (it.MoveNext()) { buffer.Dequeue(); buffer.Enqueue(it.Current); } return buffer; } } public static void Main() { var seq = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; foreach (var n in seq.Last(5)) Console.Write(string.Format("{0} ", n)); } }