相关疑难解决方法(0)

C#DBNull和可空类型 - 最清晰的转换形式

我有一个DataTable,它有许多列.其中一些列可以为空.

DataTable dt;  // Value set. 
DataRow dr;  // Value set. 

// dr["A"] is populated from T-SQL column defined as: int NULL 
Run Code Online (Sandbox Code Playgroud)

那么,什么是从DataRow中的值转换为可空变量的最干净形式.

理想情况下,我可以做类似的事情:

int? a = dr["A"] as int?; 
Run Code Online (Sandbox Code Playgroud)

编辑:原来你可以这样做,副作用是如果你的Schema类型没有整数,那么这总是会返回null.Ruben使用的答案dr.Field<int?>("A")确保类型不匹配不会无声地失败.当然,这将通过彻底的单元测试来获得.

相反,我通常会输入以下内容:

int? a = dr["A"] != DBNull.Value ? (int)dr["A"] : 0; 
Run Code Online (Sandbox Code Playgroud)

这是一堆更多的击键,但更重要的是,有更多的空间让某人用错误的击键来填充内容.是的,单元测试会选择它,但我宁愿完全停止它.

对于这种情况,什么是最干净,最不容易出错的模式.

c# datatable types nullable

37
推荐指数
2
解决办法
4万
查看次数

标签 统计

c# ×1

datatable ×1

nullable ×1

types ×1