gpt4 book ai didi

c# - 延迟过滤列表

转载 作者:行者123 更新时间:2023-11-30 19:41:34 25 4
gpt4 key购买 nike

我有一个项目列表,我想从该列表中选择 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].拿(3) => [2, 2, 2]

我想要这样的东西:[1, 2, 2, 2, 3, 4, 5, 2].Where(x => x == 2, 3) => [2, 2, 2],其中 3 是它在停止过滤之前匹配的元素数。

最佳答案

我假设您还不了解 linq 的延迟执行。您的第一种方法完全符合您的要求:

list.Where(x => x == 2).Take(3)

它会检查每个项目,但直到找到三个与谓词匹配的项目为止。

看看 Eric Lipperts 对我的问题的回答,因为他解释得很好:https://stackoverflow.com/a/10110269/284240

这也值得一读:http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx

关于c# - 延迟过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com