在这个数据表中没有重复项,我需要行索引,其中列x值等于2.我会这样做:
Dim rowIndex As Integer = 0
For i = 0 To mtable.Rows.Count - 1
If mtable.Rows(i)("x") = 2 Then
rowIndex = i
Exit For
End If
Next
我将每秒多次调用此过程。在.NET中有更快的方法吗?
答案 0 :(得分:1)
每秒多次有点模糊 - 数十还是数千?
您可以创建一个哈希表,将“x”的值映射到行号:
Dim nLookups = mtable.Rows.Count - 1
Dim lookupHash As New Hashtable(nLookups)
For i = 0 To nLookups
lookupHash.Add(CInt(mtable.Rows(i)("x")), i)
Next
然后
Dim rowSought As Integer = -1
If lookupHash.ContainsKey(2) Then
rowSought = lookupHash(2)
End If
或者,如果“x”的可能值范围合适,您可以使用数组将值映射到行号。
答案 1 :(得分:1)
DataTable select可以工作,我认为它应该比遍历行集合更快。
var index = mtable.Rows.IndexOf(mtable.Select("x = 2").FirstOrDefault());