У меня есть словарь Dictionary
Ключ - c1, c3, c2, t1,, t4, t2. Я хочу отсортировать их по c1, c2, c3 , t1, t2, t3
Я пытаюсь отсортировать его, используя
Input.OrderBy(key => key.Key );
, но это не работает
понятия не имею, как это решить
хорошо, проверьте, это должно работать
var r = new Dictionary<string, Point>();
r.Add("c3", new Point(0, 0));
r.Add("c1", new Point(0, 0));
r.Add("t3", new Point(0, 0));
r.Add("c4", new Point(0, 0));
r.Add("c2", new Point(0, 0));
r.Add("t1", new Point(0, 0));
r.Add("t2", new Point(0, 0));
var l = r.OrderBy(key => key.Key);
var dic = l.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
foreach (var item in dic)
{
Console.WriteLine(item.Key);
}
Console.ReadLine();
Загрузите несортированный объект в объект SortedDictionary следующим образом:
SortedDictionary<string, string> sortedCustomerData = new SortedDictionary<string,string>(unsortedCustomerData);
Где unsortedCustomerData - тот же универсальный тип (строка словаря, строка или в вашем случае строка, точка). Он автоматически отсортирует новый объект по ключу
Согласно msdn: SortedDictionary (IDictionary): Инициализирует новый экземпляр класса SortedDictionary, который содержит элементы, скопированные из указанного IDictionary, и использует реализацию IComparer по умолчанию для типа ключа. .
Поскольку Input.OrderBy создает запрос, который возвращает элементы в упорядоченном порядке, просто назначьте его в тот же словарь.
objectDict = objectDict.OrderBy(obj => obj.Key).ToDictionary(obj => obj.Key, obj => obj.Value);
Я использовал
var l = Input.OrderBy(key => key.Key);
и преобразовал его в словарь