param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : DBNull.Value;
为什么这是不可能的,任何建议还有什么可以尝试?如果不是20个参数的/ else。
答案 0 :(得分:59)
问题在于(如错误消息所示)条件表达式在两个分支上都需要相同的类型,否则需要从一个类型到另一个类型进行隐式转换。在你的情况下,没有一个,所以你得到错误。一个快速解决方案是将其中一个值转换为(object)
(这很好,因为DbParameter.Value
的类型为object
。)
所以这对你有用:
param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : (object)DBNull.Value;