Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何使用LINQ过滤嵌套类的集合以生成这些类的唯一属性的字典?_Vb.net_Linq_Class_Dictionary_Nested - Fatal编程技术网

Vb.net 如何使用LINQ过滤嵌套类的集合以生成这些类的唯一属性的字典?

Vb.net 如何使用LINQ过滤嵌套类的集合以生成这些类的唯一属性的字典?,vb.net,linq,class,dictionary,nested,Vb.net,Linq,Class,Dictionary,Nested,我有两个类,一个嵌套在另一个中 Public Class Operation Public Property Name Public Property Records As List(Of Record) Public Class Record Public Property ID as Integer 现在,我有一组操作--> 操作和记录之间的“名称”或“ID”都不是唯一的 我希望使用LINQ=dictionary(字符串的,列表的,整数的)构造

我有两个类,一个嵌套在另一个中

Public Class Operation

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

    Public Class Record

        Public Property ID as Integer
现在,我有一组操作-->

操作和记录之间的“名称”或“ID”都不是唯一的


我希望使用LINQ=dictionary(字符串的,列表的,整数的)构造一个字典,其中键是我集合中名称的唯一示例,值是与这些名称相关联的不同ID的集合。

这创建了一个
字典(字符串的,列表的,Int32的))
将唯一名称作为键,并将其关联的记录ID作为值

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))

Tim Scmelter建议的代码基本上做到了这一点。我必须做一个小改动,使我的记录ID唯一,这很好

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))

我真的不记得用VB的语法做这件事的最佳方法了。但是它将是从操作中选择许多项来记录。id组合成一个
名称
+
记录
id
对象。然后按
名称分组
,并将分组对象映射到字典中。感谢您的回答-这是一步。然而,我处于在语法上苦苦挣扎。如果有人能补充特拉维斯的想法,那就太好了。谢谢蒂姆:)-你的回答真的很有帮助,很有启发性。
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))