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

行のコレクションを反復処理するよりも高速であると思います。

    var index = mtable.Rows.IndexOf(mtable.Select("x = 2").FirstOrDefault());
于 2013-02-08T21:19:16.387 に答える
1

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 に答える