2016-12-23 5 views
-1

Я хочу сделать коллекцию, чтобы данные доступны Пример:Получить данные из коллекции

Dim b As New Collection 
    colb = New Collection 

    b.Add("system", "1001", "SYSTEM") 
    b.Add("network", "1002", "NETWORKA") 
    b.Add("networksecond", "1010", "NETWORKB") 
    colb.Add(b, "list") 

им ищет функцию, чтобы получить данные из этой коллекции: Я хочу, на основе ID (Второе число) получить первое и третье значение Так что, если я ищу 1010, мне нужно иметь значение Сеть и NETWORKA

+0

Я не думаю, что это скомпилируется даже с использованием коллекции VB. Вы пытаетесь добавить 3 связанных строки в 'b' за раз? – Plutonix

+0

Есть ли возможность компиляции – Menno

+0

Что вы хотите сделать? Как построить такой класс коллекции? Как использовать существующую коллекцию? Как использовать коллекцию, которая имеет такую ​​возможность? – Plutonix

ответ

2

VB6 называется, они хотят вернуть свою коллекцию.

Нет, серьезно, пожалуйста, используйте Dictionary вместо старого, унаследованного класса Collection. Вот красота генерик и строгая типизация:

Dim dic As New Dictionary(Of Integer, Tuple(Of String, String)) 

dic.Add(1001, Tuple.Create("system", "SYSTEM")) 
dic.Add(1002, Tuple.Create("network", "NETWORKA")) 
dic.Add(1010, Tuple.Create("networksecond", "NETWORKB")) 

' Search 
Dim t As Tuple(Of String, String) = Nothing 
If dic.TryGetValue(1002, t) Then 
    Console.WriteLine(t.Item1) ' prints "network" 
    Console.WriteLine(t.Item2) ' prints "NETWORKA" 
End If 

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

0

Кроме того, вы можете просто использовать List(Of T). В большинстве случаев этого достаточно. Словарь хорош для быстрого поиска длинного списка одним ключом.

'declare model 
Public Class NetworkModel 
    Public Property Id As Integer 
    Public Property Name1 As String 
    Public Property Name2 As String 
End Class 

' load list of models 
Private _modelList As New List(Of NetworkModel)() 
....... 

' search using LINQ 
Dim model As NetworkModel = _modelList.FirstOrDefault(Function(m) m.Id = 1001) 

If model IsNot Nothing Then . . . . . 
Смежные вопросы