Click here to Skip to main content
15,886,724 members
Articles / Programming Languages / Visual Basic
Tip/Trick

VS2010/VB.NET update single column for a rows in a DataTable

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
22 Sep 2010CPOL 18.3K   3  
The following code for VS2010 shows how to update a single column for all rows in a DataTable by enumerating through the DataTable as an array using Array.ForEach method.

VB
Private Sub UpdateSingleColumnInAllRows()
    Dim dtTable As New DataTable

    With dtTable.Columns
        .AddRange(New DataColumn() _
        {
              New DataColumn("ID", System.Type.GetType("System.String")),
              New DataColumn("FirstName", System.Type.GetType("System.String")),
              New DataColumn("LastName", System.Type.GetType("System.String"))
        }
    )
    End With

    dtTable.Rows.Add(New Object() {"100", "Kevin", "Gallagher"})
    dtTable.Rows.Add(New Object() {"200", "Katrina", "Gallagher"})
    dtTable.Rows.Add(New Object() {"300", "Zack", "Gallagher"})

    dtTable.AsEnumerable.ToList.ForEach(
        Sub(row) Console.WriteLine("{0} {1}",
                                   row.Item("FirstName"), row.Item("LastName")))

    Console.WriteLine()

    Array.ForEach(dtTable.AsEnumerable.ToArray,
        Sub(row As DataRow) row("Lastname") = row("LastName").ToString.ToUpper)

    dtTable.AsEnumerable.ToList.ForEach(
        Sub(row) Console.WriteLine("{0} {1}",
                                   row.Item("FirstName"), row.Item("LastName")))

End Sub


In the above code all last names (Gallagher) are updated to (GALLAGHER)

Note that in the Action of the Array.ForEach you need to cast the type of the param to DataRow, otherwise this code will not work.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Instructor / Trainer
United States United States
Microsoft MVP, Uses Microsoft Visual Studio ecosystem building web and desktop solutions

Comments and Discussions

 
-- There are no messages in this forum --