можете да го напишете като
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);
По този начин втората част от вашето условие няма да бъде оценена, ако първото ви условие е фалшиво
Актуализация:
ако пишете
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
и name1 е null, втората част от вашето условие няма да бъде оценена, тъй като или условието изисква само едно условие да върне true
моля вижте тази връзка за повече подробности