2015-11-26 95 views
0
JOIN

我越来越用在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。

+0

怎么样'y.a.HalfTimeHomeGoals'的性能还是B? –

回答

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可以接取像

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

假设两个类的问题与MatchesLeagues包含一个字段/属性命名HalfTimeHomeGoals下面的代码应工作:

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