次のようなものが機能します(これは構文チェックされていません、申し訳ありません):
// This requires the array of Categories to have no duplicates.
public Dictionary<string, PdfOutline> BuildUpMyCollectionOfOutlines(string[] categories)
{
return categories.ToDictionary(cat => new KeyValuePair<string, PdfOutline>(cat, null));
}
このようにすれば、後で結果をそのまま消費することができます (これを行う関数を持つことはばかげていますが、それを消費する方法を示すための私の方法です):
public PdfOutline GetOutlineByCategory(Dictionary<string, PdfOutline> outlines, string category)
{
// This will be problematic if the category isn't actually in the dictionary.
return outlines[category];
}
Dictionary<string, PdfOutline>
a と aのような他のものを使用する必要があるかどうかはList<KeyValuePair<string, PdfOutline>>
、1) これらの数と 2) それらへのアクセス方法に依存します。たとえば、それらが 10,000 個あり、カテゴリ名でそれらをランダムかつ繰り返し検索する必要がある場合、ディクショナリは検索を高速化するためにハッシュ化されるため、適切なアプローチです (データベース内のテーブルのインデックスを考えてください)。ただし、10,000 個あるのに 2 個しか見つからない場合、またはその逆で 10 個しかない場合は、高速検索機能を構築するためのオーバーヘッドが無駄になります。したがって、辞書とその他の辞書は、「これがデータベース テーブルにある場合、インデックスを作成しますか?」という質問によって最もよく答えられます。