puedes escribirlo como
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);
De esta manera, la segunda parte de su condición no se evaluará si su primera condición se evalúa como falsa
Actualización:
si escribes
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
y nombre1 es nulo, la segunda parte de su condición no se evaluará ya que o la condición solo requiere una condición para devolver verdadero
por favor vea este enlace para más detalles