我试图测试出新的空条件运算符在。net 4.6(使用VB.Net),但它不是为我工作时,从数据库记录的字段检索空值,我不明白为什么。下面是我的代码:
Dim dbtable As New DataSet1.MyDataTable
Dim dbrecord As DataSet1.MyRecord
dbrecord = dbtable.NewMyDataTableRow
Dim val = dbrecord.CustomerName?.ToString
但是,它仍然会抛出System.Data.StrongTypingException。
我做错了什么?
看起来CustomerName
的值是DBNull
,而不是null
。请参阅StrongTypingException的文档:
当用户访问
DBNull
值时,由强类型DataSet
抛出的异常。
空条件运算符不能帮助您处理DBNull
值。
我认为你别无选择,只能手动检查dbrecord.IsCustomerNameNull
(你应该有一个类似的属性命名)之前,试图读取CustomerName
。
我找到了一个不像总是检查IsCustomerNameNull
那样麻烦的解决方法。用这个代替:
Dim val = dbrecord("CustomerName")?.ToString