VB.Net:将一个列表的内容放入另一个列表中

时间:2017-01-30 15:16:37

标签: vb.net list for-loop recursion instantiation

给出两个清单:

Dim listOfCollectiveTasks As New List(Of String) Dim listOfCollectiveTasks2 As New List(Of String)

我正在向listOfCollectiveTasks2添加元素,然后尝试删除listOfCollectiveTasks的内容...之后将listOfCollectiveTasks2的内容放入其中。

代码:

Public Sub testRecursive()
    For Each atask In listOfCollectiveTasks
        getRemainingSupportingTask(getTaskID(atask), "Collective")
        'getRemainingSupportingTask(atask, "Individual")
    Next


    listOfCollectiveTasks = Nothing
    For Each item In listOfCollectiveTasks2
        Console.WriteLine(item.ToString)
    Next
    listOfCollectiveTasks.Concat(listOfCollectiveTasks2)
    testRecursive()

End Sub

Public Sub getRemainingSupportingTask(theID As String, collectiveOrSupporting As String)
    Dim rs As New ADODB.Recordset
    Dim listOfTasks As New List(Of String)
    Dim theQuery As String = "Select * from [SupportingTask$] where [TaskID] = "
    theQuery = theQuery + "'" + theID + "'" + " and [SupportingTaskTypeName] = " + "'" + collectiveOrSupporting + "'"
    rs = MyADO.executeQuery(theQuery)
    Console.WriteLine(theQuery)


    Do Until rs.EOF
        Dim theString As String = rs.Fields("SupportingTaskNumber").Value
        If String.Equals(collectiveOrSupporting, "Collective") Then

            listOfCollectiveTasks2.Add(theString)



            Console.WriteLine(theString)
            newXlSheet.Cells(lastCollectiveRow, 1) = theString
            lastCollectiveRow = lastCollectiveRow + 1


        Else
            'listOfIndividualTasks.Add(theString)
            Console.WriteLine(theString)
            newXlSheet.Cells(lastIndividualRow, 2) = theString
            lastIndividualRow = lastIndividualRow + 1

        End If
        rs.MoveNext()
    Loop
    Console.WriteLine("Done")
    Console.WriteLine("")



End Sub

我在listOfCollectiveTasks.Concat(listOfCollectiveTasks2)上获得System.ArgumentNullException。我无法找到将list2中的项目放入list1的方法。

1 个答案:

答案 0 :(得分:1)

除非您必须在市场之后或在市场操作之前做一些事情,否则仅使用System.Type集合添加范围会更有效。然后清除附加的原始列表。像这样:

Sub Main()
    Dim ls1 = New List(Of String)({"a", "b", "c", "d"})
    Dim ls2 = New List(Of String)
    Dim ls3 = New List(Of String)({"e", "f"})

    ls2.AddRange(ls1)
    ls1.Clear()

    ls2.AddRange(ls3)
    ls3.Clear()

    Console.WriteLine($"Count of List1: {ls1.Count}")
    Console.WriteLine($"Count of List2: {ls2.Count}")
    Console.WriteLine($"Count of List3: {ls3.Count}")
    ls2.ForEach(Sub(x) Console.WriteLine(x))

    Console.ReadLine()
End Sub
相关问题