Let\'s say I have a sequence.
IEnumerable sequence = GetSequenceFromExpensiveSource();
// sequence now contains: 0,1,2,3,...,999999,1000000
My traditional IEnumerable approach:
///
/// Skips first element of an IEnumerable
///
/// Enumerable type
/// The enumerable
/// IEnumerable of type skipping first element
private IEnumerable SkipFirstEnumerable(IEnumerable models)
{
using (var e = models.GetEnumerator())
{
if (!e.MoveNext()) return;
for (;e.MoveNext();) yield return e.Current;
yield return e.Current;
}
}
///
/// Skips last element of an IEnumerable
///
/// Enumerable type
/// The enumerable
/// IEnumerable of type skipping last element
private IEnumerable SkipLastEnumerable(IEnumerable models)
{
using (var e = models.GetEnumerator())
{
if (!e.MoveNext()) return;
yield return e.Current;
for (;e.MoveNext();) yield return e.Current;
}
}