0

そのため、既に利用可能な PDF のリストから PDF を結合するプログラムを作成しようとしています。ここまででほとんどの作業が完了しましたが、特に 1 つのステップで問題が発生しています。それが明らかでない場合は、これもc#で書いています。

カテゴリ名を含む文字列の配列があり、カテゴリ名ごとに、プログラムで後で反復処理できる null に初期化される PdfOutline 型の変数を作成したいと考えています。

私はこれを自分で調べようとしましたが、辞書がそれを行う方法のようですが、どうすればよいかわかりません。第一に、辞書を正しい方法で作成することであり、第二に、実装の助けが必要です。

御時間ありがとうございます!

4

1 に答える 1

0

次のようなものが機能します(これは構文チェックされていません、申し訳ありません):

// 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 個しかない場合は、高速検索機能を構築するためのオーバーヘッドが無駄になります。したがって、辞書とその他の辞書は、「これがデータベース テーブルにある場合、インデックスを作成しますか?」という質問によって最もよく答えられます。

于 2013-04-25T23:45:48.203 に答える