vb.net - 将嵌套 for 循环转换为 LINQ

标签 vb.net linq

我有以下对象结构

一个小组有很多团队,一个团队有很多玩家

m_Groups 是可观察的组集合

我正在尝试获取给定团体名称和玩家姓名的团队名称 我可以像 in for every 那样执行此操作,但在将其转换为 LINQ 时遇到问题:

Dim retVal As String = String.empty  

For Each g In m_Groups
  For Each t In g.Teams
    For Each p In t.Players
      If p.PlayerName.Equals(name) Then
        retVal = t.TeamName
      End If
    Next
  Next
Next

最佳答案

Dim teamName = (From group in Groups _
                From team In group.Teams _
                From player In team.Players _
                Where player.PlayerName.Equals(name) _
                Select team.TeamName).FirstOrDefault()

(免责声明:我主要猜测上面的 VB 语法。)

此外,我处理像您这样的情况的实际方法是为玩家提供一个 Team 属性,并在加载后将它们连接一次,而不是每次都进行查找。 (假设玩家分配不改变,双向连接将需要一些样板来维护。)

关于vb.net - 将嵌套 for 循环转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488917/

相关文章:

vb.net - 简化 select case 语句以避免 DRY

c# - 如何将 XML 文件读取到 Dictionary<String,List<String>> 中,空字符串为 null 元素

mysql - 简单的 VB 语法来显示数据库中的一些值

vb.net - SQL 注入(inject) : Why is the following code dangerous?

c# - TakeLast 在 .net core 3.1 中没有按预期工作

linq - linq中foreach的 yield 返回

c# - 如何在 Linq Query 中获取 IndexOf() 空格

c# - 使用 Linq 查询丢失 foreach

c++ - VB.NET:未知的 KeyDown 事件问题

asp.net - 根据所述 MenuItem 是否启用来更改 asp.net MenuItem BackColor?