我有一个项目列表,我想从列表中选择满足谓词的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是多少在它停止过滤之前它匹配的元素。
第一个例子看起来不错,只要你想匹配的是3项谓词。第二个不起作用的原因很明显。 –
您的第一个示例应该可以工作,因此您需要更具体地了解它没有。确保你实际上试图枚举从'Take'返回的序列。 – Lee
为什么你的第一个例子不起作用? –