using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Text; public static class MyExtensions { public static IEnumerable SkipLast(this IEnumerable source, int count) { Queue saveList = new Queue(); int saved = 0; foreach (T item in source) { if (saved < count) { saveList.Enqueue(item); ++saved; continue; } saveList.Enqueue(item); yield return saveList.Dequeue(); } yield break; } } class Program { static void Main(string[] args) { int[] a = new[] { 1, 2, 3, 4, 5 }; var b = a.SkipLast(2); foreach (var item in b) Console.WriteLine(item); List c = new List() { "one", "two", "three", "four", "five" }; var d = c.Skip(1).SkipLast(1); foreach (var e in d) Console.WriteLine(e); } }