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

    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)

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

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

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

Ключом во внешнем sortedList будет CustomerName.

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

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

0
eric 4 Дек 2020 в 06:47

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()))))
1
Enigmativity 4 Дек 2020 в 04:57