0

I am learning LINQ Query, and I want to update one column value using LINQ Query, can someone please guide me, Below is what I have.

Dim dtMytable As New Strongly_TypedTable
dtMytable.Merge(Contact.LoadContact(User, lstIds))
For Each r In dtMytable 
       r.id = ' Some Args.Value
Next

But I want to use LINQ to achieve it.

Something like

dtMytable .Where(Function(c) ' what to write here` ).ToList()
Unbreakable
  • 7,776
  • 24
  • 90
  • 171

3 Answers3

2

If your update is for few columns following approach can be used.

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 Dim dt As New DataTable("tblEntTable")
 dt.Columns.Add("ID", GetType(String))
 dt.Columns.Add("Amount", GetType(Decimal))
 dt.Rows.Add(New Object() {"1", 100.51})
 dt.Rows.Add(New Object() {"2", 200.52})
 dt.Rows.Add(New Object() {"3", 500.24})
 dt.Rows.Add(New Object() {"4", 400.31})
 dt.Rows.Add(New Object() {"5", 600.88})
 dt.Rows.Add(New Object() {"6", 700.11})

 MethodSyntax(dt)
 'QuerySyntax(dt)
End Sub

Sub MethodSyntax(ByVal dt As DataTable)
 Array.ForEach(dt.AsEnumerable().ToArray(), Sub(row) row("Amount") = 900.23)
 DataGridView1.DataSource = dt
End Sub

Sub QuerySyntax(ByVal dt As DataTable)
 Dim result = From row In dt.AsEnumerable()
     Select New With { _
     .ID = row.Field(Of String)("ID"), _
     .Amount = 800
     }

 DataGridView1.DataSource = result.ToList()
End Sub
Kusal Dissanayake
  • 714
  • 14
  • 32
1
dtMytable.Select("Amount > 100").ToList().ForEach(Sub(row)
                                              row("Amount") = 250
                                             End Sub)
senthilkumar2185
  • 2,536
  • 3
  • 22
  • 36
0

Use Foreach linq extention

dtMytable.AsEnumerable().ForEach(Sub(obj) obj.Field<int>("id") = New value)
Ayaz
  • 2,111
  • 4
  • 13
  • 16