How to take all but the last element in a sequence using LINQ?

前端 未结 22 1568
南笙
南笙 2020-11-30 02:51

Let\'s say I have a sequence.

IEnumerable sequence = GetSequenceFromExpensiveSource();
// sequence now contains: 0,1,2,3,...,999999,1000000
         


        
22条回答
  •  庸人自扰
    2020-11-30 03:15

    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;
        }
    }
    

提交回复
热议问题