3

メモリ内にいくつかの中規模のデータ セットがあり、それらから情報をすばやくフィルター処理して検索できるようにする必要があります。データセットは十分に小さいので、エントリが必要になるたびにデータベースにアクセスしてパフォーマンスに影響を与えたくありませんが、何らかの方法でデータにインデックスを付ける必要があるほど十分に大きいです。

現在、索引付けのために 1 つ以上の辞書を持つ POCO オブジェクトを使用しています。これは、特定のキーで何かを見つける必要がある場合にうまく機能しますが、そうでない場合もあります。例として、特定の日時範囲内でエントリを見つける必要があることがよくあります。また、最低価格のエントリが必要になる場合もあります。ほとんどの場合、クエリはいくつかの単純なキーと 1 つまたは 2 つの他のフィールドを同時に調べます。

これに役立つツール、製品、ライブラリ (.NET フレームワークを対象とする) はありますか? それとも、ほこりだらけの古いアルゴリズムの本を手に取って、検索ツリーを調べ始める必要がありますか?

例:

旅行

  • 出発コード
  • 宛先コード
  • ホテルコード
  • ルームコード
  • 日にち
  • 価格

「DepartureCode=LAX DestinationCode=NYC である 2010 年 3 月 9 日から 2010 年 3 月 12 日までの最も安い旅行を取得してください」のようなクエリが必要です。

4

2 に答える 2

2

「最低価格」と「特定の日付/時間範囲」の両方を、ソートされたコレクションとバイナリ検索だけで処理できます。SortedList/ SortedDictionary(またはSortedSet.NET 4.0 を使用している場合) おそらく、ここで必要なすべてのことを、ごくわずかな作業で実行できます。

于 2010-03-09T15:47:32.717 に答える
0

DataSet.Table("YourTable") .Select()メソッドはどうですか?

Dim myRows() as DataRow = myDataSet.Tables("myTable").Select("Date>" & _
    myBeginDate & "AND Date<" & myEndDate)

編集:MSDN から

DataView の構築

DataView は、DataView が作成されたときと、Sort、RowFilter、または RowStateFilter プロパティが変更されたときに、基になる DataTable 内のデータのインデックスを構築します。DataView オブジェクトを作成するときは、Sort、RowFilter、および RowStateFilter の値を (基になる DataTable と共に) コンストラクター引数として受け取る DataView コンストラクターを使用します。その結果、インデックスは 1 回作成されます。「空の」DataView を作成し、その後、Sort、RowFilter、または RowStateFilter プロパティを設定すると、インデックスが少なくとも 2 回作成されます。

したがって、DataSet にインデックスを付けたい場合は、DataView がそれを提供できるようです。

于 2010-03-09T15:46:54.600 に答える