无法确定条件表达式的类型,因为'string'和'System.DBNull'之间没有隐式转换

el *_*nho 27 c# asp.net

param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : DBNull.Value;
Run Code Online (Sandbox Code Playgroud)

为什么这是不可能的,任何建议还有什么可尝试的?如果20个参数的/ else不是这样的话.

dle*_*lev 61

问题是(如错误消息所示)条件表达式在两个分支上都需要相同的类型,否则需要从一个类型到另一个类型的隐式转换.在你的情况下,没有一个,所以你得到错误.一个快速修复将被转换为其中一个值(object)(这很好,因为无论如何DbParameter.Value都是类型object.)

所以这对你有用:

param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : (object)DBNull.Value;
Run Code Online (Sandbox Code Playgroud)