2012-01-07 102 views
1

你好,我有一个Dynamic DataTable在运行时创建。安装程序是这样的如何在VB.NET中使用LINQ查找DataTable行

Id | Name | Age 
----------------- 
3 | Mike | 21 
6 | John | 43 
8 | Sara | 34 

我想要做的是拿出一个linq语句,我可以用来查找和更新特定的行。

如声明,更改年龄为 '33' WHERE ID = '3'

到目前为止我的代码是:

-[VB.NET]- 
Dim MyRow As DataRow = From column In MyTable.Rows Where column("Id") = 3 
MyRow(0)("Age") = 33 

但是,这并没有更新我的数据表项。任何帮助,将不胜感激。谢谢。

+0

嗨其中场@迈克,考虑一个答案作为你的解决方案,以最好的方式解决你的问题,并形容它.. – 2012-01-07 13:26:12

回答

8

纠正我,如果我错了。看看:

Dim row As DataRow = (From column In MyTable.Rows Where column("Id") = 3).FirstOrDefault() 
If Not IsNothing(row) Then 
row("Age") = 33 
End If 

或者你可以尝试DataTable.Select()方法。

Dim rows=MyTable.Select("ID=3") 
+1

@Mike:那么你应该[接受这个答案] (http://meta.stackexchange.com/a/5235/147438)。顺便说一句,[Find-Method](http://msdn.microsoft.com/en-us/library/y06xa2h1(v = VS.100).aspx)是通过主键筛选DataTable的最快方法。 – 2012-01-07 13:25:56

2

这不是LINQ但过滤数据表。

Dim iRow() As DataRow = ParticularSource.Tables(ParticularTable).Select(
    String.Format("ItemID = '{0}'", ParticularID)) 

ParticularSource是我的数据集的名称
ParticularTable的名称是我的DataTable
ItemID是我搜索了
ParticularID是价值要搜索

iRow(0)("Age") = NewValue 
ParticularSource.Tables(ParticularTable).AcceptChanges()