vous pouvez l'écrire comme
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);
De cette façon, la deuxième partie de votre condition ne sera pas évaluée si votre première condition est évaluée comme fausse
Mise à jour :
si vous écrivez
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
et name1 est null la deuxième partie de votre condition ne sera pas évaluée puisque or condition ne nécessite qu'une seule condition pour retourner true
plz voir ce lien pour plus de détails