如何找出列中是否存在一个VB.Net DataRow

我正在读取一个XML文件到DataSet中,并需要从DataSet中获取数据。 由于它是一个用户可编辑的configuration文件,所以这些字段可能也可能不在那里。 为了处理丢失的字段,我想确保DataRow中的每一列都存在,而不是DBNull。

我已经检查了DBNull,但是我不知道如何确保列没有抛出exception或者使用循环遍历所有列名的函数。 什么是最好的方法来做到这一点?

DataRow的好处就是它们的基础表与他们链接。 使用底层表可以validation特定的行中是否有特定的列。

If DataRow.Table.Columns.Contains("column") Then MsgBox("YAY") End If 

您可以使用DataSet.Tables(0).Columns.Contains(name)来检查DataTable是否包含具有特定名称的列。

查找列是否存在的另一种方法是在将列名称传递给它时,检查Columns集合索引器返回的值为Nothing

 If dataRow.Table.Columns("ColumnName") IsNot Nothing Then MsgBox("YAY") End If 

当以下代码随后需要获取该DataColumn以供进一步使用时,此方法可能优于使用Contains("ColumnName")方法的方法。 例如,您可能想知道哪个types的值存储在列中:

 Dim column = DataRow.Table.Columns("ColumnName") If column IsNot Nothing Then Dim type = column.DataType End If 

在这种情况下,这种方法可以节省您对Contains("ColumnName")的调用,同时使代码更清洁一些。

你可以用try … catch语句封装你的代码块,当你运行你的代码时,如果这个列不存在,它将会抛出一个exception。 然后你可以找出它引发了什么特定的exception,并以不同的方式处理这个特定的exception,如果你愿意,比如返回“未find列”。