2012-02-28 2 views
9

У меня есть список, как следует, и я хочу, чтобы добавить его в другом списке:добавить список в другой список в vb.net

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

, чтобы получить что-то вроде {{r1,a1},{r2,a2},{r3,a3}}, как я могу добиться этого в VB. Сеть?

+0

ли вы хотите), чтобы добавить один список на конец других, или б) один есть список где каждый элемент также является списком? –

+0

{{x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}, {x4, y4, z4}, {x5, y5, z5}, {x6, y6, z6}, {и т. д.}} –

+4

Вместо вложенных списков то, что вам действительно нужно сделать, это создать класс, который представляет запись, а затем иметь единственный список записей.A * немного * больше усилий, но это облегчит вам жизнь. –

ответ

4

Я предполагаю, что из вашего вопроса вы хотите вложенные списки, а не просто добавлять один список в конец другого?

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) 

Надеется, что это помогает

Update
Чтению их, как доступ к любому другому списку.
Чтобы получить первое поле первой записи

return records(0)(0) 

второго поля в первой записи

return records(0)(1) 

и др. , ,

+0

ОК, это работает, но в более позднее время, как я могу прочитать элемент по определенному индексу в listRecord? Спасибо –

11

Вы можете использовать Листа AddRange

listRace.AddRange(listRecord) 

или перечислимых-х Concat:

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

, если вы хотите избавиться от дубликатов использовать перечислимых-х Union:

Dim uniqueItems = listRace.Union(listRecord) 

Разница между AddRange и Concat является:

  • Enumerable.Concat производит новую последовательность (ну, на самом деле не производит сразу из-за Concat «s отложенного исполнения, это больше похоже на запрос), и вы должны использовать ToList, чтобы создать новый список от него.
  • List.AddRange добавляет их к тем же List, поэтому модификаторы оригинальные.
+0

euhh ok, но в более позднее время, как я могу прочитать элемент по определенному индексу в listRecord? Спасибо ! –

+0

@Naad: Я не уверен, понимаю ли вы вас правдоподобно. Вы сохраняете ссылку на listRecord. Таким образом, вы всегда можете читать элементы через индекс: 'Dim item = listRecord (10)' –

+0

У меня есть цикл For Loop, и в каждом цикле я хочу добавить список в конец другого (в моем случае append listRecord to listRace), чтобы получить listRace = {{listrecord1}, {listrecord2}, {listrecord3}} –

1

Я искал ту же проблему и нашел решение. Я думаю, что это именно то, что вы хотите (Для того, чтобы установить элементы списка рядный, вместо того, чтобы использовать функции списка (()) класс):

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")}} 

Я признаю, что это кажется сложным, но это структура.

Для того, чтобы сделать код выглядит проще, я добавляю следующий экран надрез, показывая код: https://www.dropbox.com/s/lwym7xq7e2wvwto/Capture12.PNG?dl=0

Смежные вопросы