du kan skriva det som
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);
På så sätt kommer den andra delen av ditt tillstånd inte att utvärderas om ditt första tillstånd utvärderas till falskt
Uppdatering:
om du skriver
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
och namn1 är null andra delen av ditt villkor kommer inte att utvärderas eftersom eller villkor bara kräver ett villkor för att returnera sant
se denna länk för ytterligare information