linq 在VB.NET中使用键添加到列表列表

zy1mlcev  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(103)

我有一个List(Of List(Of MyObject))。我有一个返回List(Of MyObject)的方法。我想把每个返回的列表添加到列表的列表中。这在LoL.Add(L)中很简单。但是,我希望能够通过一个键引用每个列表。
举例来说:

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

字符串
我已经读了十几个类似的问题:group a list of listsgroup a list of objects into a list of listsgrouping a list of objects into a new list of list of objects。我似乎不能适应我的问题的答案中的代码。
我读过的所有问题似乎都假设列表的列表是好的,而不是零碎的,我所有的尝试都以类型转换错误和异常结束。
我不确定是否应该使用IGroupingDictionary对象,但我的尝试也失败了。
我试着对我的另一段代码进行逆向工程,它以类似的方式工作:

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),也不知道这是否是正确的方法。
请注意,我可以自由地更改返回的内容和各种类型(ListIEnumerableIGroupingDictionary),但我不知道在这种情况下使用哪种类型。现在看来,我最好的选择是将每个列表添加到列表或一个巨大的列表中,* 然后 * 执行GroupBy。尽管这似乎效率不高。
最后,我的目标是遍历每个组,然后遍历该组中的每个列表。

yc0p9oo0

yc0p9oo01#

如果你需要一个键,列表的列表不是正确的结构。一个选择是Dictionary (Of String, List(Of MyObject))

相关问题