Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

LINQ:Hinzufügen einer Where-Klausel nur, wenn ein Wert nicht null ist

Sie können es schreiben wie

IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);

Auf diese Weise wird der zweite Teil Ihrer Bedingung nicht ausgewertet, wenn Ihre erste Bedingung als falsch ausgewertet wird

Aktualisierung:
wenn du schreibst

IQueryable query = from staff in dataContext.Staffs;
    query = from staff in query where (name1 == null || staff.name == name1);

und name1 ist null, der zweite Teil Ihrer Bedingung wird nicht ausgewertet, da or Bedingung nur eine Bedingung benötigt, um wahr zurückzugeben

siehe diesen Link für weitere Details