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

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

    Nothing in the BCL (or MoreLinq I believe), but you could create your own extension method.

    public static IEnumerable TakeAllButLast(this IEnumerable source)
    {
        using (var enumerator = source.GetEnumerator())
            bool first = true;
            T prev;
            while(enumerator.MoveNext())
            {
                if (!first)
                    yield return prev;
                first = false;
                prev = enumerator.Current;
            }
        }
    }
    

提交回复
热议问题