Как найти строку DataTable по значению столбца с помощью LINQ в VB.NET

Здравствуйте, у меня есть динамическая таблица данных, созданная во время выполнения. Настройка примерно такая

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

То, что я пытаюсь сделать, это придумать оператор linq, который я мог бы использовать для поиска и обновления определенных строк.

Например, оператор для изменения AGE на '33', WHERE ID = '3'

Мой код до сих пор:

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

Но это не обновляет мою запись DataTable. Любая помощь будет оценена по достоинству. Спасибо.


person Mike Rebosse    schedule 07.01.2012    source источник
comment
Привет @Mike, считайте один ответ своим решением, которое наилучшим образом решает вашу проблему, и хорошо его опишите ..   -  person Niranjan Singh    schedule 07.01.2012


Ответы (2)


Поправьте меня если я ошибаюсь. Взгляни на:

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")
person kv-prajapati    schedule 07.01.2012
comment
@Mike: Тогда вам следует принять этот ответ. Кстати, метод Find-Method самый быстрый способ отфильтровать DataTable по первичному ключу. - person Tim Schmelter; 07.01.2012

это не LINQ, а фильтрация данных.

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

ParticularSource — это имя моего набора данных
ParticularTable — это имя моей таблицы данных
ItemID — это поле, в котором я искал
ParticularID — это значение для поиска

iRow(0)("Age") = NewValue
ParticularSource.Tables(ParticularTable).AcceptChanges()
person John Woo    schedule 07.01.2012