Jak zabrać wszystkie elementy oprócz ostatniego w sekwencji używając LINQ?

Powiedzmy, że mam sekwencję.

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

Uzyskanie sekwencji nie jest tanie i jest generowane dynamicznie, a ja chcę ją powtarzać tylko raz.

Chcę uzyskać 0 - 999999 (tj. Wszystko oprócz ostatniego elementu)

Rozumiem, że mógłbym zrobić coś takiego:

sequence.Take(sequence.Count() - 1);

ale skutkuje to dwoma wyliczeniami nad dużą sekwencją.

Czy istnieje konstrukcja LINQ, która pozwala mi:

sequence.TakeAllButTheLastElement();

questionAnswers(20)

yourAnswerToTheQuestion