使用您的設置,我假設您每次需要搜索特定團隊時都會執行LINQ查詢。更好的方法是建立一個線性結構,如字典,其中name
爲關鍵字。
保持接近你得到了什麼沒有,這裏是一些代碼一起玩:
Option Strict On
Public Class Form1
Class MyGroup
Public Teams As New List(Of MyTeam)
End Class
Class MyTeam
Public Players As New List(Of MyPlayer)
Public TeamName As String
End Class
Class MyPlayer
Public PlayerName As String
End Class
Dim m_Groups As New List(Of MyGroup)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim p As New MyPlayer With {.PlayerName = "Player"}
Dim t As New MyTeam With {.TeamName = "Team", .Players = New List(Of MyPlayer)({p})}
m_Groups.Add(New MyGroup With {.Teams = New List(Of MyTeam)({t})})
Dim name As String = "Player" 'player name to be searched
Dim teamName = (From group In m_Groups _
From team In group.Teams _
From player In team.Players _
Where player.PlayerName.Equals(name) _
Select team.TeamName).FirstOrDefault()
End Sub
End Class
它深受@ millimoose的回答的影響,有兩個細微的變化:
Dim team
- >Dim teamName
,在同一範圍內不能有兩個team
變量。
- OP想要團隊名稱,所以
Select player
成爲Select team.TeamName
。