using System; using System.Collections.Generic; namespace Curran.Utils { static public class Skip { public class SkipFirst : IEnumerable { private IEnumerable mEnum; public SkipFirst(IEnumerable enm) { mEnum = enm; } #region IEnumerable Members public IEnumerator GetEnumerator() { IEnumerator iter = mEnum.GetEnumerator(); if (iter.MoveNext()) { while (iter.MoveNext()) { yield return iter.Current; } } } #endregion #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion } public class SkipLast : IEnumerable { private IEnumerable mEnum; public SkipLast(IEnumerable enm) { mEnum = enm; } #region IEnumerable Members public IEnumerator GetEnumerator() { IEnumerator iter = mEnum.GetEnumerator(); if (iter.MoveNext()) { T curr = iter.Current; while (iter.MoveNext()) { yield return curr; curr = iter.Current; } } } #endregion #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion } static public SkipFirst First(IEnumerable enm) { return new SkipFirst(enm); } static public SkipLast Last(IEnumerable enm) { return new SkipLast(enm); } } }