Ich gebe einem Benutzer Flexibilität durch die Bereitstellung entweder Benutzername oder Benutzer-ID, die verschiedene Datenbankfelder sind, beide Zeichenfolgen. Hier ist meine Linq Abfrage unter:Linq Abfrage und mehrere Where-Klauseln mit OR nur erste Bedingung wird ausgewertet
var usr = ctx.Users.Where(a => (a.Username.Equals(id) || a.UserID.Equals(id))).ToList();
Die Sache ist, wenn ich es mit Benutzername nennen: „johndoe“, bekomme ich einen Datensatz zurück, aber wenn ich Benutzer Benutzer-ID: „12345“, dann erhalte ich keine Aufzeichnungen zurück, obwohl es einen Benutzer "johndoe" mit der ID "12345" in der Datenbank gibt.
Auch wenn ich es zu ändern:
var usr = ctx.Users.Where(a => a.UserID.Equals(id)).ToList();
Es funktioniert gut mit UserID; "12345". So scheint es, dass nur die erste Bedingung ausgewertet wird. Ich kann nicht herausfinden, was ich falsch mache ...
Nur um Dinge zu verdeutlichen: Ich möchte beide Felder für den angegebenen ID-Wert überprüfen und den Datensatz zurückgeben, bei dem eines der Felder mit der ID übereinstimmt.
Das Endergebnis, das ich erhalten möchte, ist, einen Datensatz (s) in meiner usr-Variablen zurückgegeben werden, unabhängig davon, welches Feld, Benutzername oder UserID der Eingabe-ID entspricht.
Der Benutzername und die Benutzer-ID in Ordnung, werden durch den gleichen Eingang gefüllt ?, z bei Ihrem ersten Zustand Schauen Sie, dass Sie beide Klauseln sind die Überprüfung von ID. Sollte es nicht nach Benutzername und ID sein? – raven
@RobertoDeLaParra Nr. OP sagt, dass sie beide mit dem gleichen Wert überprüfen möchten. – krillgar
Warum ist Ihre ID in der Datenbank eine Zeichenfolge? Bist du sicher, dass es kein 'int' ist? – krillgar