like @Greg said in his [comment](http://codereview.stackexchange.com/questions/132630/removing-n-elements-from-array-starting-from-index#comment247581_132630) - you can make it really short with LINQ and you don't have to check any ranges: static IEnumerable<T> Remove<T>(this IEnumerable<T> items, int startIndex, int count) { return count > 0 ? items.TakeWhile((x, i) => i < startIndex).Concat(items.Skip(startIndex + count)) : items.TakeWhile((x, i) => i < (startIndex + count + 1)).Concat(items.Skip(startIndex + 1)); }