Как отсортировать словарь по ключу

У меня есть словарь Dictionary

Ключ - c1, c3, c2, t1,, t4, t2. Я хочу отсортировать их по c1, c2, c3 , t1, t2, t3

Я пытаюсь отсортировать его, используя

Input.OrderBy(key => key.Key );

, но это не работает

понятия не имею, как это решить

28
задан Erno 12 February 2018 в 07:24
поделиться

4 ответа

хорошо, проверьте, это должно работать

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();
-5
ответ дан 28 November 2019 в 03:18
поделиться

Загрузите несортированный объект в объект SortedDictionary следующим образом:

SortedDictionary<string, string> sortedCustomerData = new SortedDictionary<string,string>(unsortedCustomerData);

Где unsortedCustomerData - тот же универсальный тип (строка словаря, строка или в вашем случае строка, точка). Он автоматически отсортирует новый объект по ключу

Согласно msdn: SortedDictionary (IDictionary): Инициализирует новый экземпляр класса SortedDictionary, который содержит элементы, скопированные из указанного IDictionary, и использует реализацию IComparer по умолчанию для типа ключа. .

10
ответ дан 28 November 2019 в 03:18
поделиться

Поскольку Input.OrderBy создает запрос, который возвращает элементы в упорядоченном порядке, просто назначьте его в тот же словарь.

objectDict = objectDict.OrderBy(obj => obj.Key).ToDictionary(obj => obj.Key, obj => obj.Value);

4
ответ дан 28 November 2019 в 03:18
поделиться

Я использовал

var l =  Input.OrderBy(key => key.Key);

и преобразовал его в словарь

0
ответ дан 28 November 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: