Почему это невозможно и любое предложение, что еще попробовать? Если /else для 20 параметров просто не подходит.
Ответ 1
Проблема заключается в том, что (как указывает сообщение об ошибке) условное выражение требует либо одинаковых типов для обеих ветвей, либо должно быть неявное преобразование из одного из типов в другое. В вашем случае нет никого, и вы получите ошибку. Одно быстрое исправление будет отличать одно из значений до (object) (это хорошо, так как DbParameter.Value имеет тип object).