【问题标题】:Anonymous type error when using JOIN in LINQ在 LINQ 中使用 JOIN 时出现匿名类型错误
【发布时间】:2015-11-26 17:00:46
【问题描述】:

在 LINQ 语句中使用连接时出现错误:

'HalftimeHomeGoals 不是匿名类型的成员;它在当前上下文中不存在'。

         Dim HomeAllLP = (From a In db.Matches
                         Join b In db.MatchesLeagues On a.Id Equals b.Id
                         Where (a.HomeTeam = HomeTeam)
                         Order By a.Date Descending
                         Select a, b)



        For Each y In HomeAllLP
            If (y.HalfTimeHomeGoals > 0) Or (y.HalfTimeAwayGoals > 0) Then
                HFHGL2 = HFHGL2 + 1
            End If
        Next

如果我只选择一个,它工作正常,但如果我尝试选择我的连接表,它会给出错误,所以我无法访问我的连接表。

我已经查过了,但到目前为止我找到的任何答案都不明白,而且它们都在 C# 中,我使用的是 VB.NET。

【问题讨论】:

  • y.a.HalfTimeHomeGoals 怎么样?

标签: vb.net linq


【解决方案1】:

如果你需要select这两种类型,它仍然是一个新类型。您可以在匿名类型的对象中选择它们,例如

Dim HomeAllLP = (From a In db.Matches
                         Join b In db.MatchesLeagues On a.Id Equals b.Id
                         Where (a.HomeTeam = HomeTeam)
                         Order By a.Date Descending
                         Select New With {a, b})

然后在 foreach 中你可以访问 a 或 b 的属性

For Each y In HomeAllLP
            If (y.a.HalfTimeHomeGoals > 0) Or (y.b.HalfTimeAwayGoals > 0) Then
                HFHGL2 = HFHGL2 + 1
            End If
        Next

【讨论】:

    【解决方案2】:

    假设 Matches 和 MatchesLeagues 类都包含名为 HalfTimeHomeGoals 的字段/属性,则以下代码应该可以工作:

    For Each y In HomeAllLP
        If (y.a.HalfTimeHomeGoals > 0) Or (y.b.HalfTimeHomeGoals > 0) Then
           HFHGL2 = HFHGL2 + 1
        End If
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多