【问题标题】:Add to a list of lists with a key in VB.NET在 VB.NET 中使用键添加到列表列表
【发布时间】: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 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) 或者这是否是正确的方法。

请注意,我可以随意更改返回的内容和各种类型(ListIEnumberableIGroupingDictionary),但我不知道在这种情况下使用哪个。现在看来我最好的选择是将每个列表添加到列表列表或一个巨大列表中,然后执行GroupBy。不过,这似乎效率不高。

最后,我的目标是遍历每个组,然后遍历该组中的每个列表。

【问题讨论】:

    标签: vb.net linq list ienumerable


    【解决方案1】:

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

    【讨论】:

    • 我使用了这种方法并让一切正常工作。我仍然想知道如何正确创建和操作List(Of IGrouping...。文档有一个例子有点太深奥了(至少对我来说)。我会在这方面继续努力,希望能学到新东西。如果可行,我也会将其添加为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多