啊哈!我找到了比@ Trebz更有效的解决方案!
datePrm.Value = nullableDate ?? (object)DBNull.Value;
如果您使用的是SQLServer,则System.Data.SqlTypes
命名空间包含一些避免恼人的类型转换的实用程序类.例如,而不是这样:
var val = (object) "abc" ?? DBNull.Value;
你可以这样写:
var val = "abc" ?? SqlString.Null;
如果你使用它会工作
datePrm.Value = nullableDate.HasValue ? (object)nullableDate.Value : DBNull.Value;
如果您使用的是C#3.0,则可以创建一个扩展方法来轻松实现:
public static class DBNullableExtensions { public static object ToDBValue(this Nullable value) where T:struct { return value.HasValue ? (object)value.Value : DBNull.Value; } } class Program { static void Main(string[] args) { int? x = null; Console.WriteLine( x.ToDBValue() == DBNull.Value ); } }