Как я могу использовать LINQ для фильтрации коллекции вложенных классов, чтобы получить словарь уникальных свойств этих классов? - PullRequest
2 голосов
/ 24 января 2012

У меня есть два класса, один вложен в другой.

Public Class Operation

    Public Property Name
    Public Property Records As List(Of Record)

    Public Class Record

        Public Property ID as Integer

Теперь у меня есть коллекция операций ->

Dim pOperations as List(Of Operation)

Ни «Имя», ни «Идентификатор» не являются уникальными для операций и записей.

Я хочу создать словарь, используя LINQ = Dictionary (Of String, Of List (Of Integer), причем ключи являются уникальными примерами имен в моей коллекции, а значения - это совокупность различных идентификаторов, связанных с этими именами. имена.

Ответы [ 2 ]

2 голосов
/ 24 января 2012

При этом создается Dictionary(Of String, List(Of Int32)) с уникальными именами в качестве ключа и соответствующими идентификаторами записей в качестве значений.

Dim dict = (From op In pOperations
            From rec In op.Records
            Group rec By op.Name Into NameGrp = Group) _
           .ToDictionary(Function(grp) (grp.Name),
                         Function(grp) (grp.NameGrp.Select(Function(r) (r.ID)).ToList))
1 голос
/ 24 января 2012

Код, предложенный Тимом Скмелтером, в значительной степени сделал свое дело.Мне пришлось сделать одно небольшое изменение, чтобы сделать мои идентификаторы записей уникальными, и это было хорошо.

Dim dict = (From op In pOperations _
            From rec In op.Records _
            Group rec By op.Name Into NameGrp = Group) _
           .ToDictionary(Function(grp) (grp.Name), _
                         Function(grp) (grp.NameGrp.Select(Function(r) _ 
                                                           (r.ID)).Distinct().ToList))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...