2012-02-28 31 views
9

Tengo una lista de la siguiente manera y quiero añadir que en otra lista:añadir una lista a otra lista en vb.net

Dim listRecord As New List(Of String) 
listRecord.Add(txtRating.Text) 
listRecord.Add(txtAge.Text) 
listRace.Add(listRecord) 

para obtener algo así como {{r1,a1},{r2,a2},{r3,a3}}, ¿cómo puedo lograr esto en VB. ¿Red?

+0

¿Quieres una) para anexar una lista en el extremo del otro, o b) uno tiene una lista donde cada elemento es también una lista? –

+0

{{x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}, {x4, y4, z4}, {x5, y5, z5}, {x6, y6, z6}, {y así sucesivamente}} –

+4

En lugar de listas anidadas, lo que realmente debe hacer es crear una clase que represente un registro y luego tener una sola lista de registros.Un * poco * más esfuerzo por adelantado, pero te hará la vida mucho más fácil después. –

Respuesta

4

Supongo que por su pregunta quiere listas anidadas, ¿no simplemente agregar una lista al final de otra?

Dim listRecord As New List(Of String) 
listRecord.Add(txtRating.Text) 
listRecord.Add(txtAge.Text) 
listRace.Add(listRecord) 

Dim records as new List(of List(of String)) 
records.Add(listRecord) 

Esperanza esto ayuda

actualización
leerlos es como acceder a cualquier otra lista.
Para obtener el primer campo en el primer registro

return records(0)(0) 

segundo campo en el primer registro

return records(0)(1) 

etc. . .

+0

ok funciona, pero en un momento posterior, ¿cómo puedo leer un elemento en un índice particular en listRecord? gracias –

11

Usted podría utilizar la Lista AddRange

listRace.AddRange(listRecord) 

o de Enumerable Concat:

Dim allItems = listRace.Concat(listRecord) 
Dim newList As List(Of String) = allItems.ToList() 

si desea eliminar el uso de los duplicados de Enumerable Union:

Dim uniqueItems = listRace.Union(listRecord) 

La diferencia entre AddRange y Concat es:

  • Enumerable.Concat produce una nueva secuencia (bueno, en realidad es no produce inmediatamente debido a Concat 's ejecución diferida, que es más como una consulta) y usted tiene que utilizar ToList para crear una nueva lista de eso.
  • List.AddRange los agrega al mismo List, por lo que modifica el original.
+0

euhh ok, pero en un momento posterior, ¿cómo puedo leer un elemento en un índice particular en listRecord? gracias ! –

+0

@Nad: No estoy seguro si te entiendo correctamente. Mantiene la referencia a listRecord. Por lo tanto, siempre puede leer elementos a través del índice: 'Dim item = listRecord (10)' –

+0

tengo un For Loop y en cada ciclo quiero agregar una lista al final de otro (en mi caso anexar listRecord a listRace) getting listRace = {{listrecord1}, {listrecord2}, {listrecord3}} –

1

He estado buscando el mismo problema y encontré la solución. Creo que esto es exactamente lo que quiere (para definir los elementos de lista en línea, en lugar de utilizar las funciones de la lista (de()) de clase):

Dim somelist As New List(Of List(Of String)) From {New List(Of String) From {("L1 item1"), ("L1 item2")}, New List(Of String) From {("L2 item1"), ("L2 item2")}} 

admito que se ve muy complicado, pero esta es la estructura.

Con el fin de hacer que el código parezco más simple, agrego el siguiente recorte pantalla que muestra el código: https://www.dropbox.com/s/lwym7xq7e2wvwto/Capture12.PNG?dl=0

Cuestiones relacionadas