1 台のコンピューターが複数のユーザーによって使用される可能性があり、複数のユーザーが特定のコンピューターを使用する可能性があると思います。その場合、ユーザーをコンピュータに関連付ける情報を保持するクラスを持つ方がおそらく簡単になるでしょう。次に、そのクラスのインスタンスのリストを作成して、一連の情報全体を保持できます。リストであるため、次のように LINQ で簡単にクエリを実行できます。
Option Infer On
Module Module1
Dim computerUsers As New List(Of ComputerUser)
Class ComputerUser
Property ComputerName As String
Property UserName As String
End Class
Sub CreateTestData()
computerUsers = New List(Of ComputerUser)
computerUsers.Add(New ComputerUser With {.ComputerName = "PC1", .UserName = "Fred"})
computerUsers.Add(New ComputerUser With {.ComputerName = "PC2", .UserName = "Jim"})
computerUsers.Add(New ComputerUser With {.ComputerName = "PC3", .UserName = "Jane"})
computerUsers.Add(New ComputerUser With {.ComputerName = "PC1", .UserName = "Jim"})
End Sub
Sub Main()
CreateTestData()
Dim pcName = "PC1"
Dim thisPcUsers = computerUsers.Where(Function(x) x.ComputerName = pcName).Select(Function(y) y.UserName).ToList()
Console.WriteLine(pcName & " is used by: " & String.Join(", ", thisPcUsers))
Dim user = "Jim"
Dim thisUserPCs = computerUsers.Where(Function(x) x.UserName = user).Select(Function(y) y.ComputerName).ToList()
Console.WriteLine(user & " uses computers: " & String.Join(", ", thisUserPCs))
Console.ReadLine()
End Sub
End Module
どの出力
PC1 is used by: Fred, Jim
Jim uses computers: PC2, PC1
これを書いている間に答えが見えなかったSethに+1を編集してください。
編集 2 LINQ はさまざまな方法で使用できます。たとえば、名前が「J*」で始まるユーザーを取得する場合などです。
Dim partialName = "J*"
Dim usersWithWildcard = computerUsers.Where(Function(x) x.UserName Like partialName).ToList()
Console.WriteLine("Users starting with " & partialName)
For Each u In usersWithWildcard
Console.WriteLine(u.UserName)
Next