从dataTable中选择特定列并更新所有行中的值

时间:2016-12-20 19:34:30

标签: vb.net datatable

我目前正在从SQL中选择一堆值并将它们加载到dataTable中。我试图找到该特定列并更新每行中的值。

Dim dt as DataTable
'not all code is included - but this definitely works on selecting data
sql = " Select value1, value2, value3 from TblA "
cmd = New SqlClient.SqlCommand(sql, conn)
Dim reader As SqlDataReader = cmd.ExecuteReader
dt.Load(reader)
return dt

我的目标是从VALUE3中的每一行获取值,并通过名为 - UpdateFormat的小格式化函数运行它。有点像....

Dim specValue As String
For Each row As DataRow In dt.Rows
      UpdateFormat(specValue ) = row.Item("Value3")
Next row

我希望更新每个值并更新dataTable,使其具有正确的值。

1 个答案:

答案 0 :(得分:1)

在之前的一集中,我们了解到您希望将该列中的数据格式从012345678格式化为012-34-5678W,其中列为VarChar,并且' W'是固定的。

您可以在SQL中进行格式化:

Dim sql = <sql>
              SELECT Id, Foo, Bar, ColA, 
                    CONCAT(SUBSTRING([Value3],1,3), 
                            '-', 
                        SUBSTRING([Value3],4,2), 
                        '-', 
                        SUBSTRING([Value3],6,4), 
                        'W' ) AS NewV3Value 
                FROM 
                    dbo.TableBob
          </sql>.Value

这样做,该列已经发送给您已格式化。根据您的数据库风格,确切的语法可能会有所不同。

<sql>...</sql>.Value只是一个XML文字,它允许您格式化长查询或复杂查询,使您更容易阅读。

在表格中自己做。由于格式很容易应用,你真的不需要一种方法来实现它:

Dim tmp As String
For Each row As DataRow In dt.Rows
    tmp = row.Field(Of String)("Value3")
    row("Value3") = String.Format("{0}-{1}-{2}W", 
                                     tmp.Substring(0, 3),
                                     tmp.Substring(3, 2),
                                     tmp.Substring(5, 4))
Next row

tmp var只是为了缩短代码。