メモリにキャッシュされているDataTable/コレクションがあります。これをソースとして使用して、オートコンプリートテキストボックスの結果を生成します(もちろんAJAXを使用)。データをすばやく取得するためのさまざまなオプションを評価しています。データテーブルのコレクション/行のアイテム数は、10000から2,000,000まで変化する可能性があります。(流用されないように、今のところ決定が下されたと仮定すると、十分なRAMがあり、データベースクエリではなくキャッシュを使用します)
この処理のための追加のビジネスロジックがいくつかあります。priority
コレクションの列(int)に従って、オートコンプリートリストに優先順位を付ける必要があります。したがって、誰かが検索してMicro
、で始まる単語/文の結果が20と表示された場合、結果Micro
の上位10項目を最も優先度の高いものとして選択します。(したがって、文字列値に関連付けられた優先度プロパティを持つ必要があります)。
コレクションアイテムはすでにアルファベット順にソートされています。
この場合の最良の解決策は何でしょうか。
1. DataTable.Select(を使用します。2。DataTable.Rows.Find(を使用します。3。foreach
またはfor
でカスタムコレクションを使用して、その値を反復処理します。4.匿名のデリゲートまたはラムダ
でジェネリックコレクションを使用します(どちらも同じパフォーマンスかどうか?)