2016-12-23 11 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に基づいて( 2番目の番号)最初と3番目の値を取得 私は1010を検索する場合、私は値を持つ必要がありますネットワークとNETWORKA

+0

VBコレクションを使用してもコンパイルできないと思います。一度に3つの関連する文字列を 'b 'に追加しようとしていますか? – Plutonix

+0

はいいいえコンパイルすることはできません – Menno

+0

あなたの質問は何ですか?そのようなコレクションクラスを構築するには?そのような既存のコレクションの使い方は?どのようにその能力を持つコレクションを使用するのですか? – Plutonix

答えて

2

VB6、彼らは彼らのコレクションを戻したい。

古いレガシーコレクションクラスの代わりにDictionaryを使用することをお勧めします。ジェネリック医薬品と強い型付けの美しさを見よ:

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 . . . . . 
関連する問題