我需要有关 linq 查询的帮助,当列表按日期排序时,如果列表连续包含 x 个对象,该查询将返回 true。
像这样:
myList.InARow(x => x.Correct, 3)
如果连续 3 个属性正确 == true,则返回 true。
不知道该怎么做。
最佳答案
使用 GroupAdjacent
扩展,你可以这样做:
var hasThreeConsecutiveCorrect
= myList.GroupAdjacent(item => item.Correct)
.Any(group => group.Key && group.Count() >= 3);
这是使用 Rollup
的另一种方式更节省空间的扩展(Select 和 Aggregate 之间的交叉):
var hasThreeConsecutiveCorrect
= myList.Rollup(0, (item, sum) => item.Correct ? (sum + 1) : 0)
.Contains(3);
关于c# - Linq:连续 X 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283021/