在LINQ中使用JOIN时出现匿名类型错误

时间:2015-11-26 17:00:46

标签: vb.net linq

在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。

2 个答案:

答案 0 :(得分:2)

如果您需要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

答案 1 :(得分:-1)

假设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