I have a table
Students
now students has 3 Booleans checks
1. IsRecordArchived
2. IsActive
3. IsOnProbation
The Booleans are not relevant to each other and doesn’t depend on each other but the record should not appear or included in the result set if any of it is TRUE.
e.g.
A student can be IsRecordArchived = TRUE but might not be the other two i.e. IsActive= false and IsOnProbation = false or could be IsActive= True and IsOnProbation= false or true even.
Or it could all be equal to TRUE. Could be anything but ultimately it should not be included in the record.
Now, my query
var students= db.Students.where(s=> !IsActive || !IsRecordArchived || !IsOnProbation).ToList();
Would sometimes work but sometimes not. How do I adjust these?
e.g.
studnet records
ID Name IsArchived IsDeleted IsOnProbation
1 Tom 1 0 0
2 Dick 1 1 0
3 Harry 0 0 1
4. Amas 0 0 0
Now, according to my query; only 4. Amas should be in the result set not the others.
>Solution :
the record should not appear or included in the result set if any of it is TRUE.
Does this really implement that logic?
var students= db.Students.where(s=> !IsActive || !IsRecordArchived || IsOnProbation).ToList();
That’s going to get records where either of IsActive and IsRecordArchived is false or IsOnProbation is true.
If you want records where none are true, i.e. all are false, then you need to specify that all are false and use AND operators:
var students= db.Students.Where(s=> !IsActive && !IsRecordArchived && !IsOnProbation).ToList();