1

在这个数据表中没有重复项,我需要列 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 中是否有更快的方法来执行此操作?

4

2 回答 2

2

DataTable select 可以工作,我认为它应该比迭代行集合更快。

    var index = mtable.Rows.IndexOf(mtable.Select("x = 2").FirstOrDefault());
于 2013-02-08T21:19:16.387 回答
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”的可能值范围合适,您可以使用数组将值映射到行号。

于 2013-02-08T21:08:29.593 回答