Я контролирую мощность лазера, и я хочу знать, когда n последовательных измерений находятся за пределами безопасного диапазона. У меня есть Queue(Of Double)
, который имеет n элементов (2 в моем примере) во время проверки. Я хочу проверить, что все элементов в очереди удовлетворяют условию, поэтому я передаю предметы через Count()
с предикатом. Однако функция count всегда возвращает количество элементов в очереди, даже если они не все удовлетворяют предикату.Enumerable.Count не работает
ElseIf _consecutiveMeasurements.AsEnumerable().Count(Function(m) m <= Me.CriticalLowLevel) = ConsecutiveCount Then
_ownedISetInstrument.Disable()
' do other things
Вид отладчик с выполнением перемещения в If
.
Очевидно, что существуют два измерения в очереди, и оба они больше, чем CriticalLowLevel
, так что счетчик должен быть равен нулю. Я сначала попробовал Enumerable.Where(predicate).Count()
, и получил тот же результат. Что происходит?
Edit:
Конечно значения находятся ниже CriticalLowLevel, который я ошибочно установлен в 598 вместо 498 для тестирования. Я слишком усложнил проблему, сосредоточив свое внимание на коде, когда это был мой тестовый пример, который был ошибочным. Наверное, я не мог видеть лес для деревьев, поэтому они говорят. Спасибо Эрику за это.
Я думаю, что вы допустили ошибку в своем тексте - не следует, чтобы третья в последней строке говорила ', и они оба меньше, чем CriticalLowLevel' ?? – Grim