Linq:连续X个对象

Chr*_*ken 4 c# linq arrays

我需要一个linq查询的帮助,当列表按日期排序时,如果列表包含一行中的x个对象,则返回true.

像这样:

myList.InARow(x => x.Correct, 3)
Run Code Online (Sandbox Code Playgroud)

如果连续3个属性为correct == true,则返回true.

不知道该怎么做.

Ani*_*Ani 8

使用GroupAdjacent扩展程序,您可以:

var hasThreeConsecutiveCorrect 
    = myList.GroupAdjacent(item => item.Correct)
            .Any(group => group.Key && group.Count() >= 3);
Run Code Online (Sandbox Code Playgroud)

这是Rollup扩展(Select和Aggregate之间的交叉)的另一种方式,它更节省空间:

var hasThreeConsecutiveCorrect 
    = myList.Rollup(0, (item, sum) => item.Correct ? (sum + 1) : 0)
            .Contains(3);
Run Code Online (Sandbox Code Playgroud)