我需要使用or和运算符在linq查询中运行多个条件。首先,我需要与三个条件进行比较,这三个条件由||分隔运算符,一旦其中一个条件为真,我还需要查看检查是否为真我使用&&运营商,但我得到了所有结果
所以例如从下面的查询中,如果ModuleLead == ContextSession.StaffID那么记录必须有ClinicalSupervisorCheck == true
var query_b = (from b in activeAssessmentWithRemidiation
where b.AssessorID == ContextSession.StaffID
|| b.ModuleLead == ContextSession.StaffID
&& b.ClinicalSupervisorCheck == true
|| b.SeniorStaffID == ContextSession.StaffID
&& b.ModuleLeadCheck==true
select b).ToList();
以上查询正在运行以下表记录
答案 0 :(得分:3)
值得在parathensis中包装AND条件,例如:
var query_b = (from b in activeAssessmentWithRemidiation
where b.AssessorID == ContextSession.StaffID ||
(b.ModuleLead == ContextSession.StaffID && b.ClinicalSupervisorCheck == true) ||
(b.SeniorStaffID == ContextSession.StaffID && b.ModuleLeadCheck==true)
select b).ToList();
答案 1 :(得分:0)
正确使用(
和)
var query_b = (from b in activeAssessmentWithRemidiation
where (((b.AssessorID == ContextSession.StaffID
|| b.ModuleLead == ContextSession.StaffID )
&& b.ClinicalSupervisorCheck == true)
||
(b.SeniorStaffID == ContextSession.StaffID
&& b.ModuleLeadCheck==true))
select b).ToList();
答案 2 :(得分:0)
使用括号。请记住,运营商&&将在||之前进行测试如果你不使用括号,则为运算符。