2009-03-05 1 views
4
Dictionary<string, string> optionDictionary = new Dictionary<string, string>(); 

optionDictionary = ....; 

SortedDictionary<string, string> optionsSorted; 

if(sorting) 
{ 
    optionsSorted = new SortedDictionary<string, string>(optionDictionary); 
    // Convert SortedDictionary into Dictionary 
} 

return optionDictionary ; 
+0

呼び出し側がそれを使用するとき、または順序が問題ではない場合、(SortedDictionaryと同様に)定義された順序でキーを返すoptionDictionaryを返すか? –

答えて

12

optionsSorted辞書を新しいDisctionaryのインスタンスへのパラメータとして渡すことができます。 IE:

var dictionary = new Dictionary<type1,type2>(optionsSorted); 
+0

辞書にはソートされていない辞書が作成されます(DictionaryはSortedDictionaryではありません)。 OPがソートされていないディクショナリからSortedDictionaryを作成したので、これは役に立ちません。 –

+0

ええと...彼はどこでソートされている辞書がほしいと言ったのですか?彼はSortedDictionaryをDictionaryに変換したいと言った。 SortedDictionaryを使用しないとソートされたディクショナリを持つことをどのように提案しますか? – BFree

+0

@BFree:私たちは、彼/彼女が望むものについて彼/彼女の意見が必要です。コードスニペットを見ると、ディクショナリを作成した後、自分のものと似た構文を使ってSortedDictionaryに変換します(ソートが真である場合)。私が彼/彼女が何を意味するかを見るために私の答えを見てください。 –

8

だけToDictionaryメソッドを使用して、次の

var dictionary = optionsSorted.ToDictionary(x => x.Key, x=> x.Value); 
1

を試してみてください。

2

達成しようとしていることは私にはっきりと分かりません。私は、あなたが辞書を返す関数を持っていると仮定しているし、ソートが真であるときにソートされた辞書にしたいと思っています。

この場合、戻り値の型はDictionaryまたはSortedDictionaryにする必要があります。

これを行う1つの関数が必要な場合は、メソッドの戻り値の型としてIDictionayを使用します。

関連する問題