gpt4 book ai didi

c# - Rx 按标准和标准后的 n 个值过滤

转载 作者:太空狗 更新时间:2023-10-29 22:33:43 24 4
gpt4 key购买 nike

仅按条件过滤

changes.Where(p => Evaluate(p)).Subscribe(p => { // Do something });

但是你如何才能得到标准值和满足标准后的 n 个值(并且这 n 个值不必与评估标准匹配)?

  • 例如我想订阅一个返回 Evaluate(p) 和之后的一个值的流(然后再次开始评估 p)

最佳答案

请看SkipWhileTake IEnumerable 的扩展方法.您可以尝试以下代码:

changes.SkipWhile(change => Evaluate(change) == false).Take(n).Subscribe(change => { /* do something */ });

编辑

新代码从尾部为 n 项的序列中获取所有匹配项(无需重复检索项)

// Let's assume elements in the sequence are of type Change
int i = 0;
Func<Change, bool> evaluateWithTail = change =>
{
if (i <= 0 || i > n)
{
i = Evaluate(change) ? 1 : 0;
}
else
{
i++;
}

return i > 0;
}
// Please note delegate is specified as parameter directly - without lambda expression
changes.Where(evaluateWithTail).Subscribe(change => { /* do something */ });

关于c# - Rx 按标准和标准后的 n 个值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9545405/

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