Cel*_*Cel 5 .net c# linq system.reactive
changes.Where(p => Evaluate(p)).Subscribe(p => { // Do something });
Run Code Online (Sandbox Code Playgroud)
但是,如何在满足标准后获得标准值和n值(并且这些n值不必与评估标准匹配)?
Evaluate(p)和一个之后的值(然后再开始评估p)请查看IEnumerable的SkipWhile和Take扩展方法。您可以尝试以下代码:
changes.SkipWhile(change => Evaluate(change) == false).Take(n).Subscribe(change => { /* do something */ });
Run Code Online (Sandbox Code Playgroud)
编辑
新代码用于从带有项目尾部的序列中获取所有匹配项目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 */ });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |