如果datarow(dr)中的列为null,我有以下代码似乎会爆炸.从数据行中解析出值并处理空值检查的正确方法是什么?
Person person = new Person()
{
FirstName = dr["FirstName"].ToString(),
LastName = dr["LastName"].ToString(),
BusinessPhoneNumber = dr["BusinessPhone"].ToString(),
Run Code Online (Sandbox Code Playgroud)
Joã*_*elo 10
如果列的类型为string,但是可以为空,那么尝试:
// FirstName must allow null
FirstName = dr["FirstName"] as string
Run Code Online (Sandbox Code Playgroud)
要么
// FirstName would be empty for a NULL in the database
FirstName = (dr["FirstName"] as string) ?? string.Empty
Run Code Online (Sandbox Code Playgroud)
我相信,数据单元格为空不能成为您问题的原因。也许该列不存在,或者发生了任何其他错误,或者 DataRow 本身为空,您应该处理该问题。查看异常 - “似乎爆炸”并不是对您的问题的有效描述。
下面解释一下,同时也为大家解答一下标题中的问题。
如果列值为null,System.DBNull则返回一个对象,.ToString()返回空字符串, while(string)或as stringreturn null。
因此,检查返回的项目是没有意义的,==null因为它永远不会计算为true。
DBNull情况。null,就.ToString()改为as string。if (dr.IsNull("FirstName"))请==null在as string.