¿Cómo tomar todo excepto el último elemento en una secuencia usando LINQ?

Digamos que tengo una secuencia.

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

Obtener la secuencia no es barato y se genera dinámicamente, y quiero recorrerla solo una vez.

Quiero obtener 0 - 999999 (es decir, todo menos el último elemento)

Reconozco que podría hacer algo como:

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

pero eso resulta en dos enumeraciones sobre la secuencia grande.

¿Hay una construcción LINQ que me permite hacer:

sequence.TakeAllButTheLastElement();

Respuestas a la pregunta(20)

Su respuesta a la pregunta