我正在监控激光的功率,我想知道n次连续测量是否在安全范围之外。我有一个Queue(Of Double)
,它在检查时有n个项目(在我的例子中为2个)。我想检查队列中的所有项是否满足条件,因此我通过带有谓词的Count()
传递项目。但是,count函数总是返回队列中的项目数,即使它们都不满足谓词。
ElseIf _consecutiveMeasurements.AsEnumerable().Count(Function(m) m <= Me.CriticalLowLevel) = ConsecutiveCount Then
_ownedISetInstrument.Disable()
' do other things
调试器的视图,执行进入If
。
显然,队列中有两个测量值,它们都大于CriticalLowLevel
,因此计数应该为零。我第一次尝试Enumerable.Where(predicate).Count()
并得到了相同的结果。发生了什么事?
修改
当然,这些值低于CriticalLowLevel,我错误地设置为598而不是498进行测试。当我的测试用例出现故障时,我将注意力集中在代码上,从而使问题过于复杂。他们说,我想我无法看到森林中的树木。谢谢Eric指出来。
答案 0 :(得分:2)
根据您的调试快照,看起来您的两个测量值都低于598.0的临界值,因此我希望计数与队列长度相匹配。
两个数据点都是&lt; = Me.CriticalLowLevel。
你能分享其中一个数据点是&gt;的例子吗? Me.CriticalLowLevel仍然表现出这种行为?