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

11

我有一个 DataTable resultSet; - 我试图检查字段是否为null,但得到了一个空的'{}'对象。搜索关于“ {}”的内容并没有产生任何适当的解决方案。

以下是在“fk_id”字段为空时未按预期工作的代码:

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

注意:使用int类型的索引而不是Columns.IndexOf()并不是问题所在。

另外,"{}"在C#中有其他名称吗?

3个回答

19

要检查DataSet中的列是否为DBNull,您可以使用IsNull方法:

if (resultSet.Rows[0].IsNull("fk_id"))

你对null的比较可能会失败,因为DataSets不使用null来表示“数据库NULL”值-他们使用DBNull.Value。如果您需要让代码按照您呈现的方式工作,请尝试这样做:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value)

非常感谢,我完全忘记了“DBNull.Value”——自从我操纵数据集以来已经有一段时间了。 - Nick Josevski
我想知道为什么他们设计成这样,而不是直接使用null? - Kimball Robinson
2
@k.rob 因为在 .NET 1.0 中没有 Nullable<T>,所以无法表示 Int32 值为 "null" 的方式。 - Matt Hamilton
你可以使用 Convert.IsDBNull(value)。 - Kimball Robinson

-2
try
{
    if (DT.Rows[0][0] != null)
    {      
      //your code
    }    
}    
catch    
{    
    MessageBox.Show("AUTHANICATION FAILED.");    
}

-2
请使用:

dataTable.Select("FieldName is NULL")

这将返回在FieldName列中具有空值的DataRows。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接