0

我有一个十进制数字流,我需要检测某种模式,然后发出一个没有值的信号。所以我想我需要写 SelectMany 但我不知道该怎么做。为了检测模式,我需要保留最后几个数字的状态。我该怎么办?

4

2 回答 2

2

尝试使用 Window 计算要检查的项目数,然后使用 where 子句与您的输入进行比较。我会在这里看到的问题是,如果您在以下序列中有一个 3 的窗口 - 12345 并且您正在检查 234,过滤器将捕获 234,但会通过 123 和 345,因此您仍将获得完整列表并且匹配的值不会被过滤掉。因此,窗口选项将用于检测模式,但不一定从流中提取模式。

于 2013-08-16T15:11:31.253 回答
1

使用带有滑动窗口的缓冲区。例如滑动窗口为 5

source.Buffer(5,1).Where(p=>MatchPattern(p)).Select(p=>Unit.Default)

在哪里

bool MatchPattern(List<T> t){
    // Some code to return true or false if pattern is met
}

Unit是一种用来表示的类型no value

于 2013-08-19T20:21:58.660 回答