(line of code of interest is the last one, the rest is just for a full representation)
Using the following code, I wanted to take VOTERS until I exceeded
Variation of Kobi's answer but demonstrates use of (value, index). index is useful in solving similar issues albeit not OP's.
(value, index)
index
voters.TakeWhile((value, index) => (voicesSoFar += value.Voices) - value.Voices < voicesNeeded);