C# 检查C中的DBNull#

C# 检查C中的DBNull#,c#,dbnull,C#,Dbnull,我有一个StronglyTyped数据行对象,可以这样访问它 accountFilter.Currency_ID Currency_ID(Int类型)是行名称。AccountFilter是数据行。 当它给出一个值时,没有问题。但当列值为NULL时,它会给出一个DBNull异常。我想检查DBNull的值,但它不起作用 bool a = Convert.IsDBNull(accountFilter.Currency_ID.ToString()); //doesnt work 很多例子都不起作用

我有一个StronglyTyped数据行对象,可以这样访问它

accountFilter.Currency_ID
Currency_ID(Int类型)是行名称。AccountFilter是数据行。 当它给出一个值时,没有问题。但当列值为NULL时,它会给出一个DBNull异常。我想检查DBNull的值,但它不起作用

bool a = Convert.IsDBNull(accountFilter.Currency_ID.ToString()); //doesnt work
很多例子都不起作用


有什么解决办法吗?

你能从这里检查一下吗

accountFilter.Fields["Currency_ID"]

你能从这里查一下吗

accountFilter.Fields["Currency_ID"]

通常,类型化数据集表中的一行对于每个可为空的列都有一个
IsXYZNull()
方法。你试过了吗

bool a = accountFilter.IsCurrency_IDNull();
但是,这仅在
accountFilter
不是类型
DataRow
而是类型化数据集中的专用数据行类型时才有效

例如:如果您有一个类型化数据集,其中包含一个名为
Test
的表,那么将有一个专门的表类
TestTable
和一个专门的数据行类
TestTableRow
。如果
Test
表包含一个可为空的字段
TestField
,则
TestTableRow
类将包含一个方法
IsTestFieldNull()
,因此您可以调用

bool isnull = testTable[0].IsTestFieldNull();
确定
TestTable TestTable
第一行中的
TestField
字段是否为
null

请注意,以下操作不起作用,因为结果不是类型
TestTableRow
,而是类型
DataRow
,因此您必须将其转换为
TestTableRow

bool isnull = testTable.Rows[0].IsTestFieldNull(); // Won't compile
bool isnull = ((TestTableRow)testTable.Rows[0]).IsTestFieldNull(); // Will compile because of cast

通常,类型化数据集表中的一行对于每个可为空的列都有一个
IsXYZNull()
方法。你试过了吗

bool a = accountFilter.IsCurrency_IDNull();
但是,这仅在
accountFilter
不是类型
DataRow
而是类型化数据集中的专用数据行类型时才有效

例如:如果您有一个类型化数据集,其中包含一个名为
Test
的表,那么将有一个专门的表类
TestTable
和一个专门的数据行类
TestTableRow
。如果
Test
表包含一个可为空的字段
TestField
,则
TestTableRow
类将包含一个方法
IsTestFieldNull()
,因此您可以调用

bool isnull = testTable[0].IsTestFieldNull();
确定
TestTable TestTable
第一行中的
TestField
字段是否为
null

请注意,以下操作不起作用,因为结果不是类型
TestTableRow
,而是类型
DataRow
,因此您必须将其转换为
TestTableRow

bool isnull = testTable.Rows[0].IsTestFieldNull(); // Won't compile
bool isnull = ((TestTableRow)testTable.Rows[0]).IsTestFieldNull(); // Will compile because of cast
你说“不行”是什么意思?如果您删除
.ToString()
?@RichardEv的“不起作用”会怎么样?他说,“它给出了一个DBNull异常”。您说的“不起作用”是什么意思?如果您删除
.ToString()
?@RichardEv的方法是“不起作用”,他说,“它给出了一个DBNull异常”。