TakeWhile, ale zdobądź element, który go zatrzymał

Chciałbym użyć LINQTakeWhile funkcja na LINQ do obiektów. Jednak muszę także znać pierwszy element, który „złamał” funkcję, tj. Pierwszy element, w którym warunek nie był prawdziwy.

Czy istnieje jedna funkcja, która pozwala uzyskać wszystkie obiekty, które nie pasują, a także pierwsza, która się zgadza?

Na przykład, biorąc pod uwagę zestaw{1, 2, 3, 4, 5, 6, 7, 8},

mySet.MagicTakeWhile(x => x != 5);

=> {1, 2, 3, 4, 5}

questionAnswers(3)

yourAnswerToTheQuestion