C#DataTable ItemArray返回'{}' - 如何测试空值?

Nic*_*ski 11 c# datatable null datarow

我有一个DataTable resultSet;- 我正在尝试检查字段为null,但是得到一个'{}'(空集?)对象.涉及"{}"的搜索不会产生任何适当的解决方案.

当"fk_id"字段为null时,这是未按预期工作的代码:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == null)
{
   //never reaches here
}
Run Code Online (Sandbox Code Playgroud)

注意:使用int索引而Columns.IndexOf()不是问题.

"{}"在C#中还有其他名称吗?

Mat*_*ton 19

要在DataSet中检查DBNull的列,可以使用IsNull方法:

if (resultSet.Rows[0].IsNull("fk_id"))
Run Code Online (Sandbox Code Playgroud)

您的比较null可能失败,因为DataSet不用于null表示"数据库NULL"值 - 它们使用DBNull.Value.如果您需要代码以您呈现的方式工作,请尝试以下方法:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value)
Run Code Online (Sandbox Code Playgroud)

  • @ k.rob因为.NET 1.0中没有Nullable <T>,所以无法表示Int32值为"null". (2认同)