使用您的设置,我假设您每次需要搜索特定团队时都会执行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
。