Вы могли бы просто сказать:
data.RecordId != 0 || data.SerialNum == "0000"
Проверка data.RecordId == 0
не нужна, мы уже определили, что data.RecordId != 0
не выполняется, поэтому из этого следует, что data.RecordId == 0
верно. Помните, что булевы условия оцениваются слева направо, и они закорачиваются: в случае ||
оценка останавливается, если первое условие истинно.
Другой способ посмотреть на это - использовать логические логики c, символически ваше выражение может быть представлено и упрощено следующим образом:
1. ¬p ∨ (p ∧ q)
2. (¬p ∨ p) ∧ (¬p ∨ q)
3. true ∧ (¬p ∨ q)
4. ¬p ∨ q
p
представляет условие data.RecordId == 0
q
представляет условие data.SerialNum == "0000"
- В строке 1 мы применяем свойство распределения
- В строке 2 мы применяем тождество, которое гласит, что
¬p ∨ p
всегда true
- В строке 3 мы применяем тождество, которое говорит, что
true ∧ p
есть p
- И вот как мы приходим к упрощению строки 4