【发布时间】:2023-03-21 03:45:01
【问题描述】:
我有一个List(Of List(Of MyObject))。我有一个返回List(Of MyObject) 的方法。我想将每个返回的列表添加到列表列表中。这对LoL.Add(L) 来说很简单。但是,我希望能够通过一个键来引用每个列表。
例如:
Key: "A"
MyObject1
MyObject2
Key: "B"
MyObject3
MyObject4
MyObject5
我已经阅读了十几个与此问题类似的问题:group a list of lists、group a list of objects into a list of lists 和 grouping a list of objects into a new list of list of objects。我似乎无法调整问题答案中的代码。
我读过的所有问题似乎都假设列表列表很好,而不是零碎。我所有的尝试都以类型转换错误和异常告终。
我不确定是否应该使用 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。不过,这似乎效率不高。
最后,我的目标是遍历每个组,然后遍历该组中的每个列表。
【问题讨论】:
标签: vb.net linq list ienumerable