我有一个十进制数字流,我需要检测某种模式,然后发出一个没有值的信号。所以我想我需要写 SelectMany 但我不知道该怎么做。为了检测模式,我需要保留最后几个数字的状态。我该怎么办?
问问题
87 次
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 回答