我正在解析XML(LINQ to XML),并且在元素/属性为空的情况下使用了可为空的类型(int?decimal?)。但是,在构建要传递给数据库的集合(使用TVP)时,我不知道如何处理该值实际上为null的情况。我不能将空值传递给SqlDataRecord SetInt32或SetDecimal,并且我不想将其设置为零。...我实际上希望它为空。

告诉我int没有过多负担吗?

下面的计数是可为空的类型(int?计数) 通用标签

有什么主意如何处理而不传递零(保持null)?

有帮助吗?

解决方案

扩展方法: 通用标签

或者按照D Stanley的建议使用SetSqlInt32 通用标签

请注意,2013年12月9日:基于评论,我回到了这个答案,我注意到有一个小的改进机会,这是基于埃里克·利珀特(Eric Lippert)关于可为空的微优化的系列文章的,该系列可以在 http://ericlippert.com/2012/12/20/nullable-micro-optimizations-part-一个/ 简而言之,尽管Value属性需要较少的键入,因此对于程序员来说可以说是最佳选择,但如果HasValue为false,则它必须引发异常。另一方面,GetValueOrDefault()方法是一种简单的字段访问方法。因此,GetValueOrDefault()需要较少的指令,并且更有可能被内联,因此对于编译器和处理器而言是最佳选择。

其他提示

我从未使用过SqlDataRecord,但是当使用DataTableDataRow或使用参数化查询时,我使用通用分类标记代码

使用null,看起来您可以使用 DBNull.Value 方法。

应使用SetSqlInt32代替SetString。试试 通用标签

// Ive在检查或处理可为空的类型时发现这对我来说是最好的 //在我的示例中,我正在检查存储在String []数组中的值 通用标签

也许您可以尝试以下方法。 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top