在数据表中查找并获取行索引

hag*_*ant 3 vb.net datatable

DataTable.Select 问题

我有这样的简单数据表

|   1  |  2   |   3  |
|------|------|------|
| 1966 | 6544 | 1967 | 
| 9560 | 3339 | 4968 | 
| 0    | 9400 | 1765 | 
| 0    | 5479 | 6701 | 
Run Code Online (Sandbox Code Playgroud)

例如,我想检查 1966 列是否已经存在于“1”列中,如果存在则获取行索引我执行这样的代码

Dim search() As DataRow = table.Select(" '" & i & "' = '" & value & "'   ")
  'where i is a integer from 1 to 3 and value is a biginteger
    If search.Count > 0 Then
        'get row index
    Else
        Console.WriteLine("not found")
    End If
Run Code Online (Sandbox Code Playgroud)

Ňɏs*_*arp 7

使用您现有的循环,只需找到表中的行:

Dim ndx As Int32
Dim rows = dtSample.Select("Id = 42")
If rows.Count > 0 Then
    ndx = dtSample.Rows.IndexOf(rows(0))
End If
Return ndx
Run Code Online (Sandbox Code Playgroud)

使用扩展方法,你可以浓缩它:

Dim ndx = dtSample.AsEnumerable().
                Where(Function(q) q.Field(Of Int32)("Id") = 42).
                Select(Function(z) dtSample.Rows.IndexOf(z)).
                ToArray()
Run Code Online (Sandbox Code Playgroud)

ndx 在这种情况下将是一个数组,当没有匹配时将是空的。