次のような形式のデータのいくつかの異なるテーブルがある職場でのシナリオがあります。
Table Name: HingeArms
Hght Part #1 Part #2
33 S-HG-088-00 S-HG-089-00
41 S-HG-084-00 S-HG-085-00
49 S-HG-033-00 S-HG-036-00
57 S-HG-034-00 S-HG-037-00
最初の列 (および場合によってはそれ以上) には、昇順に並べ替えられた数値データが含まれ、取得するデータの適切なレコードを決定する範囲を表します (たとえば、高さ <= 33 の場合、パート 1 = S-HG-088-00、高さ <= 41 の場合1部=S-HG-084-00など)
指定された値を指定して、最も近い一致を検索して選択する必要があります。たとえば、高さが 34.25 の場合、上記のセットの 2 番目のレコードを取得する必要があります。
41 S-HG-084-00 S-HG-085-00
これらのテーブルは現在、CSV ファイルからロードされたデータの VB.NET ハッシュテーブル "キャッシュ" に格納されています。ハッシュテーブルのキーは、テーブル名と、テーブルの "キー" を表すテーブルの 1 つ以上の列を組み合わせたものです。記録。たとえば、上記のテーブルの場合、最初のレコードの Hashtable Add は次のようになります。
ht.Add("HingeArms,33","S-HG-088-00,S-HG-089-00")
これは最適とは言えず、必要に応じて構造を柔軟に変更できます (キャッシュには、直接参照が可能な他のテーブルからのデータが含まれています... これらの「範囲」テーブルは、「簡単」だったためにダンプされました)。範囲内で最も一致するレコードを取得するために Hashtable/Dictionary の "Next" メソッドを探していましたが、VB.NET のストック クラスでは明らかに利用できません。
ハッシュテーブルまたは別の構造で探していることを行う方法についてのアイデアはありますか? ルックアップはコードのさまざまなセクションで頻繁に呼び出されるため、パフォーマンスが高い必要があります。どんな考えでも大歓迎です。ありがとう。