Как найти исходную позицию в DataTable из отфильтрованного DataView - PullRequest
1 голос
/ 05 августа 2011

Я хочу найти конкретный идентификатор в DataTable, я использую DataView для фильтрации результатов, но как узнать, какой строке в исходной таблице соответствует представление фильтра?Есть идеи?В курсе, я мог бы использовать LINQ, но я не думаю, что это тоже помогло бы?найди это:

        For r As Integer = 0 To dt.Rows.Count - 1
            If CInt(dt.Rows(r).Item("ID")) = 123 Then
                Debug.WriteLine("Found it at row " + r.ToString)
                Exit For
            End If
        Next

1 Ответ

2 голосов
/ 05 августа 2011

Нет ничего проще:

Dim dr As DataRow = dv(0).Row

http://msdn.microsoft.com/en-us/library/system.data.datarowview.row%28v=VS.100%29.aspx

Редактировать: Согласно вашему комментарию, вы можете использовать следующее, чтобы получить индекс строки

Dim rowIndex As Int32 = -1
For i As Int32 = 0 To dr.Table.Rows.Count - 1
    If dr.Table.Rows(i)("ID").Equals(dr("ID")) Then
        rowIndex = i
        Exit For
    End If
Next

Или более коротким способом:

Dim rowIndex As Int32 = dr.Table.Rows.IndexOf(dr)

http://msdn.microsoft.com/en-us/library/system.data.datarowcollection.indexof.aspx

...