puoi scriverlo come
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);
In questo modo la seconda parte della tua condizione non verrà valutata se la tua prima condizione risulta falsa
Aggiornamento:
se scrivi
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
e name1 è null la seconda parte della tua condizione non verrà valutata poiché o condition richiede solo una condizione per restituire true
per favore, guarda questo link per ulteriori dettagli