Я пытаюсь отфильтровать список объектов, каждый из которых имеет календарный год в качестве одного из своих значений. Пользователь вводит начальный год (например, 1920) и конечный год (1940), и любой объект, который имеет год между этими двумя значениями, добавляется в список. Поэтому для каждого объекта во всем списке я выполняю следующие условия:
If _end >= _nList(i).Year > _start Then
filterList.Add(_nList(i))
End If
Однако это возвращает false. Но когда я изменяю его на:
If _start < _nList(i).Year <= _end Then
filterList.Add(_nList(i))
End If
Это оценивается как истина и запускает код. _nList(i).Year
- это 1928, _start
- это 1920, а _end
- это 1940. Логически два утверждения должны быть эквивалентны:
1940 >= 1928 > 1920
1920 < 1928 <= 1940
Но по какой-то причине они не в этом случае. Что я здесь пропустил?