vb.net - 避免在每列上检查 DataRow.IsDBNull 吗?

标签 vb.net dataset datarow dbnull

我的代码比自动设置时长 2 倍 IsDBNull""或者简单地将其翻转而不会出错。

这是我的代码:

Dim conn As New SqlConnection
conn.ConnectionString = Module1.DBConn2
Dim sqlCommand = New SqlCommand("SELECT * FROM table", conn)
conn.Open()
Dim sqlDataset As DataSet = New DataSet()
Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
sqlDataAdapter.Fill(sqlDataset)
conn.Close()

For Each rs As DataRow In sqlDataset.Tables(0).Rows
    If Not IsDBNull(rs("column")) Then
        Response.Write(rs("column"))
    Else
        Response.Write("")
    End If

    Response.Write("some stuff to write")

    If Not IsDBNull(rs("column2")) Then
        Response.Write(rs("column2"))
    Else
        Response.Write("")
    End If
Next

在那种情况下,我只想输入 Response.Write(rs("column"))而不是 If声明,如果 column IsDBNull然后输出一个空字符串。

我怎样才能做到这一点?

提前谢谢了!

最佳答案

您可以简单地使用 String.Join 并通过 row.ItemArray :

For Each row As DataRow In sqlDataset.Tables(0).Rows
    Response.Write(String.Join("", row.ItemArray))
Next

DBNull.ToString 起有效返回一个空字符串。

如果你想处理每一列,你可以使用强类型 DataRowExtensions.Field 支持可空值并返回 null 的方法/Nothing为字符串。然后你可以使用 null-coalescing operator (在 C# 中为 ??,在 VB 中为 If)。
Dim rowInfo = String.Format("{0}{1}{2}",
                            If(row.Field(Of String)("Column1"), ""),
                            If(row.Field(Of String)("Column2"), ""),
                            If(row.Field(Of String)("Column3"), ""))

但是,请注意 String.Format将转换 null/Nothing""无论如何,所以If是多余的,仅供引用。

MSDN :

If the object specified by index is a null reference (Nothing in Visual Basic), then the format item is replaced by the empty string ("").

关于vb.net - 避免在每列上检查 DataRow.IsDBNull 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401264/

相关文章:

c# - 如何将扩展方法应用于数据行列?

vb.net - VB.NET 中的 CLS 合规性问题

c# - MySql.Data.MySqlClient 命名空间与 System.Data.OracleClient 命名空间

在R中读取gml文件

c# - 检查 DataRow 是否包含特定列的最佳实践

c# - 更新数据表中的单元格

asp.net - '12' 运算符后缺少操作数

vb.net - 编码返回 Double() 以在 VBA 中使用的 .Net 函数

asp.net - VB.net反序列化,JSON从类型 'Dictionary(Of String,Object)'到类型 'String'的转换

c# - 这个警告是什么意思(关于修改数据和 DataTable.RowChanged 事件的 MSDN 文档)?