c# Сортировка вложенных списков, как?
Есть вложенный список
public Dictionary<dynamic, Dictionary<string, dynamic>> Data = new();
В него динамически добавляются данные такого рода:
Data .Add(ID, new Dictionary<string, dynamic> {
{ "Addr", Addr },
{ "Pos", Pos },
{ "Description", Description },
{ "Number", Number }
});
На выходе получаем примерный список:
Data["adx01"][{"Addr":5},{"Pos":100},{"Description":"Описание1"},{"Number":44}];
Data["vdx11"][{"Addr":2},{"Pos":45},{"Description":"Описание2"},{"Number":12}];
Data["ydx50"][{"Addr":3},{"Pos":67},{"Description":"Описание3"},{"Number":71}];
Data["zdx31"][{"Addr":10},{"Pos":9},{"Description":"Описание4"},{"Number":33}];
Мне нужно отсортировать его по полю "Number", чтобы было вот так:
Data["ydx50"][{"Addr":3},{"Pos":67},{"Description":"Описание3"},{"Number":71}];
Data["adx01"][{"Addr":5},{"Pos":100},{"Description":"Описание1"},{"Number":44}];
Data["zdx31"][{"Addr":10},{"Pos":9},{"Description":"Описание4"},{"Number":33}];
Data["vdx11"][{"Addr":2},{"Pos":45},{"Description":"Описание2"},{"Number":12}];
Каким методом это можно сделать?
Ответ: aepot: Data=Data.OrderBy(pair => (int)pair.Value["Number"]).ToDictionary(pair => pair.Key, pair => pair.Value)
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Берете модель данных
public class Item
{
public long Addr { get; set; }
public long Pos { get; set; }
public string Description { get; set; }
public long Number { get; set; }
}
var items = new Dictionary<string, Item>();
items.Add(id, new Item
{
Addr = Addr,
Pos = Pos,
Description = Description,
Number = Number
});
тогда отсортировать это можно так
var ordered = items.OrderBy(pair => pair.Value.Number);
Сам по себе словарь не может считаться упорядоченной структурой данных, поэтому запихивать перечислитель ordered типа IEnumerable<KeyValuePair<string, Item>> обратно в словарь нет никакого смысла. И используйте для словаря строго типизированные ключи сравниваемого типа.