Кажется, что вы просите элегантный способ взять Dictionary<TKey,TValue>
и превратить его в SortedDictionary<TValue,TKey>
(обратите внимание, что значение Dictionary
теперь является ключом SortedDictionary
). Я не вижу ответа на этот вопрос, так что вот так.
Вы можете создать метод расширения, который выглядит следующим образом:
static class Extensions
{
public static Dictionary<TValue, TKey>
AsInverted<TKey, TValue>(this Dictionary<TKey, TValue> source)
{
var inverted = new Dictionary<TValue, TKey>();
foreach (KeyValuePair<TKey, TValue> key in source)
inverted.Add(key.Value, key.Key);
return inverted;
}
}
И код вашего приложения будет выглядеть так:
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
var dict = new Dictionary<String, Double>();
dict.Add("four", 4);
dict.Add("three", 3);
dict.Add("two", 2);
dict.Add("five", 5);
dict.Add("one", 1);
var sortedDict = new SortedDictionary<Double, String>(dict.AsInverted());
}
}