Упрощение вашего логического выражения показывает, что оно всегда приводит к истине, поэтому здесь есть проблема.
Быстрый урок по булевой алгебре:
NOT(A AND B) = NOT(A) OR NOT(B)
NOT(A OR B) = NOT(A) AND NOT(B)
Применительно к вашему выражению пишите для простоты A1 = ""
как A
и A2 = ""
как B
:
Not (A And B) Or Not (Not A And Not B)
= Not(A) Or Not(B) or Not(Not(A)) or Not(Not(B))
= Not(A) Or Not(B) or A or B
= True
] Я имею в виду, что вы имеете в виду что-то вроде:
Not((A and B) or (Not(A) and Not(B)))
Что может быть упрощено, но это ухудшает читабельность (то, что вы хотите проверить, становится менее очевидным).
Наконец, вы не должны писать что-то вроде этого:
If Expression
Boolean = False
, а:
Boolean = Not(Expression)
Предполагая, что присвоение переменной не является заполнителем для фактического кода.
Так как Вы используете JavaScript уже для обработки события щелчка переключателя на клиенте, Вы могли обновить скрытое поле с выбранным значением одновременно.
Ваш серверный код затем просто получил бы доступ к выбранному значению от скрытого поля.
Я вполне уверен, что единственная вещь, для которой Вы могли использовать LINQ для Объектов здесь, будет состоять в том, чтобы взять условия из цикла foreach и переместить их в где пункт.
RadioButton checked =
(from item in answerVariantRepeater.Items
let radioButton = (RadioButton)item.FindControl("answerVariantRadioButton")
where radioButton.Checked
select radioButton).FirstOrDefault();