Ich habe dieses Teil des Codes zum Durchsuchen einer Datenbank. Ein Benutzer sollte hier 3 Möglichkeiten haben: Um nur den Nachnamen einzugeben, kann der Vorname und der Benutzer mit beiden suchen - Nachname und Vorname.Nicht obligatorische Felder in der Suche
Dieser Code ruft die Datensätze aus meiner Datenbank ab, wenn ich beide Zeichenfolgen - Nachname und Vorname - zur Verfügung stelle. Aber wenn ich nur einen von ihnen tippe, ist meine resultierende Liste immer leer.
var query = from x in db.people
where (txtSurname == null || x.Surname== txtSurname.Text)
&& (txtFirstName == null || x.FirstName == txtFirstName.Text)
select x;
var data = query.ToList();
peopleBindingSource.DataSource = data;
Mit dieser Methode wird wahrscheinlich auch bessere zwischengespeicherte Abfragepläne produzieren. Sie erhalten keine schlechten Indizes aufgrund von Parameter-Sniffing von einem vorherigen Lauf, bei dem die meisten Felder nicht verwendet wurden. –
Dies ist nicht genau dasselbe, wenn die Vergleichsprüfung in der Frage durchgeführt wird. if (txtSurname == null), Sie überprüfen nur, ob (txtSurname.Text). – David
@David Ja, aber ich vermute, das ist ein Tippfehler, der das ursprüngliche Problem verursacht hat. – DavidG