Добавить в список списков с ключом в VB.NET

У меня List(Of List(Of MyObject)). У меня есть метод, который возвращает List(Of MyObject). Я хочу добавить каждый возвращенный список в список списков. Это просто с LoL.Add(L). Однако я хочу иметь возможность ссылаться на каждый список по ключу.

Например:

Key: "A"
    MyObject1
    MyObject2
Key: "B"
    MyObject3
    MyObject4
    MyObject5

Я прочитал более десятка вопросов, похожих на эту: сгруппируйте список списков, сгруппировать список объектов в список списков и группировка списка объектов в новый список списка объектов. Кажется, я не могу адаптировать код в ответах на мою проблему.

Похоже, что все вопросы, которые я прочитал, предполагают, что список списков хорош и не делается по частям. Все мои попытки заканчиваются ошибками и исключениями преобразования типов.

Я не уверен, следует ли мне использовать вместо этого объект IGrouping или Dictionary, но мои попытки там также не увенчались успехом.

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

Dim assignmentListByDay = _routeAssignments.OrderBy(Function(a) a.AssignmentDate).
    GroupBy(Function(a) a.AssignmentDate)

Здесь _routeAssignments относится к типу IEnumerable(Of MyObject). assignmentListByDay становится IEnumerable(Of IGrouping(Of Date, MyObject). Позже в моем коде я могу:

For Each assignmentList In assignmentListByDay

    Dim ucAssignment As New ucSingleDayAssignment With _
        {.AssignmentDate = assignmentList.Key,
         .Assignments = assignmentList.ToList}

    'do stuff

Next

Я попытался сделать что-то подобное, превратив свой список списков в List(Of IGrouping(Of String, MyObject), но я не могу понять, как преобразовать возвращенный список в IGrouping(Of String, MyObject) и правильно ли это.

Обратите внимание, что я могу изменить то, что возвращается, и различные типы (List, IEnumberable, IGrouping, Dictionary), но я не знаю, что использовать в этой ситуации. Сейчас мне кажется, что лучше всего добавить каждый список к списку списков или к одному гигантскому списку, затем делать GroupBy. Однако это не кажется очень эффективным.

В конце концов, моя цель - перебрать каждую группу, а затем перебрать каждый список в этой группе.


person Zairja    schedule 19.05.2014    source источник


Ответы (1)


Список списков - неправильная структура, если вам нужен ключ. Один из вариантов - Dictionary (Of String, List(Of MyObject)).

person D Stanley    schedule 19.05.2014
comment
Я использовал этот подход, и все заработало. Я все еще хотел бы знать, как правильно создавать и управлять List(Of IGrouping.... В документации был пример слишком эзотерический (по крайней мере, для меня). Я буду продолжать пробовать себя в этом направлении и, надеюсь, узнаю что-то новое. Если сработает, я тоже добавлю это в качестве ответа. - person Zairja; 20.05.2014