Using the GroupAdjacent extension, you can do:
var hasThreeConsecutiveCorrect = myList.GroupAdjacent(item => item.Correct) .Any(group => group.Key && group.Count() >= 3);
Here's another way with the Rollup extension (crossing between Select and Aggregate), which is slightly more economical:
var hasThreeConsecutiveCorrect = myList.Rollup(0, (item, sum) => item.Correct ? (sum + 1) : 0) .Contains(3);
source share