我有一个项目列表,我想从该列表中选择 3 个满足谓词的项目。
我试过这个:(示例)
list.Where(x => x == 2).Take(3)
list.Take(3).Where(x => x == 2)
但当然,它们不起作用。
是否有一种机制只选择满足谓词的元素直到.Take(3)
满足?
编辑:第一个例子的问题是它首先选择每个匹配的元素,然后取前 3 个。我只希望它选择直到它取 3 个。我想它只对大量集合很重要,但仍然如此。或者这就是我的理解。
发生这种情况:(编辑:我错了)
[1, 2, 2, 2, 3, 4, 5, 2].Where(x => x == 2)
=> [2, 2, 2, 2].Take(3)
=>[2, 2, 2]
我想要类似的东西:
[1, 2, 2, 2, 3, 4, 5, 2].Where(x => x == 2, 3)
=> [2, 2, 2]
,其中 3 是它在停止过滤之前匹配的元素数。