使用或和运算符一起查询linq查询

时间:2015-11-11 10:27:26

标签: c# sql-server linq

我需要使用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();

以上查询正在运行以下表记录

enter image description here

3 个答案:

答案 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)

使用括号。请记住,运营商&&将在||之前进行测试如果你不使用括号,则为运算符。