Если «не имеет значения» означает ноль, то вы можете использовать оператор объединения нулей ?? сказать принять первое значение, если оно заполнено, в противном случае взять второе:
var efCars = (from d in myentity.Cars
where d.CarName == (inputCar.CarName ?? d.CarName
&& d.CarIdNumber == (inputCar.IdNumber && d.CarIdNumber)
&& d.Make == (inputCar.Make && d.Make)
select d.Car);
Это в основном говорит, что если значение существует, оно должно совпадать, в противном случае оно рассматривается как соответствующее
Однако если вместо этого вы говорите «когда специальное значение (пустая строка) игнорирует его, в противном случае совпадают», тогда вы можете сделать один из двух подходов (или, возможно, больше!):
where (inputCar.CarName == "" || d.CarName == inputCar.CarName)
where (string.IsNullOrEmpty(inputCar.CarName) || d.CarName == inputCar.CarName)