Ausgabe
Ich habe einen Tisch
Students
Jetzt haben die Schüler 3 Booleans
Schecks
1. IsRecordArchived
2. IsActive
3. IsOnProbation
Sie sind Booleans
nicht füreinander relevant und hängen nicht voneinander ab, aber der Datensatz sollte nicht erscheinen oder in der Ergebnismenge enthalten sein, wenn einer davon TRUE
.
z.B
A student
kann ich sein, muss sRecordArchived = TRUE
aber nicht die anderen beiden sein, dh IsActive= false
und IsOnProbation = false
oder könnte IsActive= True
und IsOnProbation= false
oder true
sogar sein.
Oder es könnte alles gleich sein TRUE
. Könnte alles sein, aber letztendlich sollte es nicht in die Aufzeichnung aufgenommen werden.
Nun meine Anfrage
var students= db.Students.where(s=> !IsActive || !IsRecordArchived || !IsOnProbation).ToList();
Würde manchmal funktionieren aber manchmal nicht. Wie passe ich diese an?
z.B
Studnet-Aufzeichnungen
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
Nun, nach meiner Frage; sollte nur 4. Amas
in der Ergebnismenge enthalten sein, nicht die anderen.
Lösung
der Datensatz sollte nicht erscheinen oder in der Ergebnismenge enthalten sein, wenn einer davon TRUE ist.
Implementiert das wirklich diese Logik?
var students= db.Students.where(s=> !IsActive || !IsRecordArchived || IsOnProbation).ToList();
Das wird Aufzeichnungen erhalten, wo entweder IsActive
und IsRecordArchived
ist false
oder IsOnProbation
ist true
.
Wenn Sie Datensätze wünschen, bei denen none are true
, dh all are false
, müssen Sie angeben, dass all are sind false
und AND
Operatoren verwenden:
var students= db.Students.Where(s=> !IsActive && !IsRecordArchived && !IsOnProbation).ToList();
Beantwortet von – Johannes
Antwort geprüft von – Senaida (FixError Volunteer)