Группировка во вложенном списке сортировки vb.net

#vb.net #nested #sortedlist

#vb.net #вложенный #сортированный список

Вопрос:

У меня есть список объектов.

     Class Sales
      Public Property CustomerName As String
      Public ItemName As String
      Public Quantity As Double
      ....other details...
    End Class

    Dim records As IList(Of Sales)
 

Есть идеи, как я могу сгруппировать их по имени пользователя, а затем по имени элемента и упорядочить их во вложенный отсортированный список?

Тип данных, к которому я хочу их упорядочить, выглядит следующим образом:-

     Dim collection As SortedList(Of String, SortedList(Of String, List(Of Sales)))
 

Ключом во внешнем списке сортировки будет CustomerName .

Ключом во внутреннем SortedList будет ItemName .

Большое спасибо за вашу помощь!

Комментарии:

1. SO — это не то место, где вы задаете вопросы вида «Я хочу сделать X, скажите мне, как». Это место для вопросов вида «Я хочу сделать X, вот как я пытаюсь это сделать, и вот что произошло, когда я попытался, скажите мне, как это исправить». Если вы не пробовали и потерпели неудачу, то у вас нет проблем, о которых нужно спрашивать. Незнание того, как что-то сделать, не является причиной для публикации здесь. Это повод изучить, как это сделать. Если вы проведете исследование и потерпите неудачу, у вас есть причина опубликовать здесь.

Ответ №1:

Это просто:

 Dim collection As New SortedList(Of String, SortedList(Of String, List(Of Sales)))( _
    records _
        .GroupBy(Function (r) r.CustomerName) _
        .Select(Function (x) New With { .CustomerName = x.Key, .Items = x.GroupBy(Function (i) i.ItemName) }) _
        .ToDictionary( _
            Function (x) x.CustomerName, _
            Function (x) New SortedList(Of String, List(Of Sales))(x.Items.ToDictionary(Function (y) y.Key, Function (y) y.ToList()))))