Как отсортировать элементы коллекции по значению в VB.NET?VB.net, Как сортировать элементы коллекции по значению
Я хочу разобраться в этом:
Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")
Как отсортировать элементы коллекции по значению в VB.NET?VB.net, Как сортировать элементы коллекции по значению
Я хочу разобраться в этом:
Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")
Как Collection.Add принимает общий тип объекта и нет определенного типа - сортировка не возможна. Поскольку объекты нужно сравнивать друг с другом, чтобы быть сортировкой, это будет похоже на сравнение апельсинов и яблок.
И коллекция предоставляет сортировку по ключу, а не по значению.
Думаю, вам, возможно, придется расширить класс Collection и реализовать сортировку. вы можете перемещать предметы с помощью методов Insert и RemoveAt.
И только мысль/совет: , если значения имеют определенный тип, как насчет использования какой-либо другой структуры данных. Как словарь, для которого вы можете отсортировать по значению, как указано в этом link
Согласен. Или используйте общий тип (например, словарь), который откроет многие параметры –
Как @Krishnadditya упоминалось, Коллекции не являются идеальными для сортировки, поскольку они содержат элементы типа Object
, который является слишком genereic, чтобы быть полезным в сравнении друг против друга. Если вы не были женаты на коллекции, вы можете сделать это с помощью запроса LINQ к списку или что-нибудь, что может быть литой перечислимого
Dim list = {
New With {.Object = "b", .Key = "b1"},
New With {.Object = "a", .Key = "a1"},
New With {.Object = "d", .Key = "d1"}}
Dim sortedList = _
From item In list
Order By item.Key
Я решил использовать словарь:
Dim newcol = (From entry In col
Order By entry.Value Descending).ToDictionary(
Function(pair) pair.Key,
Function(pair) pair.Value)
ли вы, Должны ли вы использовать коллекцию или дженерики? –
только коллекция – exim
Это позор. Словарь был бы намного более гибким. –