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