Итак, если flag
равно false
, вам нужны все Jhoms, а если flag
верно, вам нужны только Jhoms в ИТ-отделе
Это состояние
!flag || (e.Field<string>("EmployeeDepartment") == "IT"
удовлетворяет этому критерию (это всегда верно, если флаг равен false и т. Д.), Поэтому запрос станет:
from e in employee
where e.Field<string>("EmployeeName") == "Jhom"
&& (!flag || (e.Field<string>("EmployeeDepartment") == "IT")
select e.Field<string>("EmployeeID")
также, этот e.Field<string>("EmployeeID")
бизнес, пахнущий программным кодированием , может взглянуть на это. Я думаю
from e in employee
where e.EmployeeName == "Jhom"
&& (!flag || (e.EmployeeDepartment == "IT")
select e.EmployeeID
будет более компактным и менее подверженным ошибкам при печати.
РЕДАКТИРОВАТЬ: Этот ответ работает для этого конкретного сценария. Если у вас много запросов такого рода, во что бы то ни стало вкладывайте средства, предложенные в других ответах.