Enumerable.Count无效

时间:2014-08-06 16:42:47

标签: vb.net linq linq-to-objects enumerable

我正在监控激光的功率,我想知道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

enter image description here

显然,队列中有两个测量值,它们都大于CriticalLowLevel,因此计数应该为零。我第一次尝试Enumerable.Where(predicate).Count()并得到了相同的结果。发生了什么事?

修改

当然,这些值低于CriticalLowLevel,我错误地设置为598而不是498进行测试。当我的测试用例出现故障时,我将注意力集中在代码上,从而使问题过于复杂。他们说,我想我无法看到森林中的树木。谢谢Eric指出来。

1 个答案:

答案 0 :(得分:2)

根据您的调试快照,看起来您的两个测量值都低于598.0的临界值,因此我希望计数与队列长度相匹配。

两个数据点都是&lt; = Me.CriticalLowLevel。

你能分享其中一个数据点是&gt;的例子吗? Me.CriticalLowLevel仍然表现出这种行为?