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

前端 未结 22 1626
南笙
南笙 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:21

    A simple way would be to just convert to a queue and dequeue until only the number of items you want to skip is left.

    public static IEnumerable SkipLast(this IEnumerable source, int n)
    {
        var queue = new Queue(source);
    
        while (queue.Count() > n)
        {
            yield return queue.Dequeue();
        }
    }
    

提交回复
热议问题