Vb.net VB:NET使用LINQ如何在某些Datatable列中找到指定字符串的行索引

Vb.net VB:NET使用LINQ如何在某些Datatable列中找到指定字符串的行索引,vb.net,linq,datatable,Vb.net,Linq,Datatable,为了检查某个列中是否存在字符串,我使用 mydatatable.AsEnumerable().Any(Function(r) r.Field(Of String)("somecolumn") = "somestring") 但是如何找到“somestring”的行索引呢?考虑到它只允许在mydatatable中存在一次,如果它存在多次会怎么样?您可以使用通过索引的重载: Dim rows = myDataTable.AsEnumerable(). Select(Function(r,

为了检查某个列中是否存在字符串,我使用

mydatatable.AsEnumerable().Any(Function(r) r.Field(Of String)("somecolumn") = "somestring")

但是如何找到
“somestring”
的行索引呢?考虑到它只允许在mydatatable中存在一次,如果它存在多次会怎么样?

您可以使用通过索引的重载:

Dim rows = myDataTable.AsEnumerable().
    Select(Function(r, i) New With {.Row = r, .Index = i}).
    Where(Function(x) x.Row.Field(Of String)("somecolumn") = "somestring")
If rows.Any() Then
    Dim firstIndex As Int32 = rows.First.Index
End If

您不能使用singleordefault返回一个数据行,然后获取该行的索引(如果该行存在或不存在)?@Ric所以我只是将.Any替换为.singleordefault?@Tim提供了一种很好的方法来查找您要查找的内容。@Ric,整数的默认值为0,因此您不能使用它立即获取索引。当然,这仅在您对索引感兴趣时才相关(如果需要datarow,我将使用FirstOrDefault)。