Конечно. Но сначала обратите внимание, что я рекомендую против этого; Я говорю, что оператор последовательности не должен иметь побочного эффекта, а оператор должен иметь побочный эффект. Если вы делаете что-то в этой лямбде ForEach, то сделайте это в теле цикла foreach, а не в виде оператора последовательности.
Тем не менее, вот что вы делаете. Во-первых, вы пишете себе ForEach, который работает с произвольными последовательностями, а не только со списками:
public static void ForEach<T>(this IEnumerable<T> sequence, Action<T> action)
{
foreach(var item in sequence) action(item);
}
А теперь вы пишете свой перерыв так:
someList
.TakeWhile(x=>x.ToString() != "foo")
.ForEach(sl=>
{/*your action here*/});