2017-01-30 8 views
0

Предоставлено два списка:VB.Net: Ввод содержимого одного списка в другой

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 

Я получаю System.ArgumentNullException на `listOfCollectiveTasks.Concat (listOfCollectiveTasks2). Я не могу понять, как помещать элементы из списка2 в список1.

+0

Каково условие выхода вашей рекурсивной функции? –

+0

Когда 'listOfCollectiveTasks' пуст – Bob

+0

Это может быть то, что вы хотите, но это не то, что произойдет. В настоящее время у вас бесконечный цикл. Кроме того, у вас есть 'NullReferenceException', поскольку вы назначили' Nothing' 'listOfCollectiveTasks'. –

ответ

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 
Смежные вопросы