2014-04-22 32 views
0

我有一個多連接查詢是這樣的:加入條款不正確的多個連接LINQ

public static List<Answer> GetDetailedAnswers(string Tag) 
    { 
     using (Database db = new Database()) 
     { 

      List<Answer> answer = 
         from quest in db.Question 
         join answ in db.Answer on quest.ID equals answ.QuestionID 
         join deal in db.Dealer on answ.DealerID equals deal.ID 
         join country in db.Country on deal.CountryID equals country.CountryID 
         where quest.ParentSection == Tag 
         select new 
         { 
             ParentSection = quest.ParentSection, 
             Section = quest.Section, 
             Dealer = deal.Name, 
             OriginalAnswer = answ.Original, 
             EngAnswer = answ.English, 
             Region = country.Country 
         }.ToList(); 
      return answer; 
     } 
    } 

,我有一個內部類是這樣的:

public class Answer 
    { 
     public string ParentSection { get; set; } 
     public string Section { get; set; } 
     public string Dealer { get; set; } 
     public string OriginalAnswer { get; set; } 
     public string EngAnswer { get; set; } 
     public string Region { get; set; } 
    } 

我在最後得到一個錯誤加盟。它說:「聯接子句中的表達式之一的類型不正確。類型推斷在調用‘加入’失敗」 我錯過了什麼? THX

+2

檢查都具有相同的datatyope,可能是一個數據類型爲int第二長像 –

+0

我可能會問的明顯,但什麼是在最後'join'字段的數據類型? –

+0

這是我懷疑的錯誤,但我不明白爲什麼。一個是uniqueID,另一個是Int。改變它的問題是解決了,但現在我得到這個錯誤:「AnonymousType#1不包含‘ToList’,沒有擴展方法‘ToList’的定義。」我應該在課堂上做和ovveride方法嗎? –

回答

0

對於錯誤:「AnonymousType#1不包含‘ToList’,沒有擴展方法‘ToList’的定義」,你可以做以下。

public static List<Answer> GetDetailedAnswers(string Tag) 
{ 
    using (Database db = new Database()) 
    { 

     List<Answer> answer = 
        (from quest in db.Question 
        join answ in db.Answer on quest.ID equals answ.QuestionID 
        join deal in db.Dealer on answ.DealerID equals deal.ID 
        join country in db.Country on deal.CountryID equals country.CountryID 
        where quest.ParentSection == Tag 
        select new Answer 
        { 
            ParentSection = quest.ParentSection, 
            Section = quest.Section, 
            Dealer = deal.Name, 
            OriginalAnswer = answ.Original, 
            EngAnswer = answ.English, 
            Region = country.Country 
        }).ToList(); 
     return answer; 
    } 
} 

您需要在圓括號內包圍查詢,然後對其應用.ToList()方法。

+0

它的工作,但它說我不能轉換列表到列表。我要弄清楚這一點。謝謝 –

+0

是的,因爲您還沒有在select中指定Answer類。檢查我的答案,我已經添加了Answer類。如果您僅使用新選項編寫選擇,則表示它爲「AnonymousType」,因此無法將其轉換爲列表。所以你需要指定類型。 –

+0

是的,我昨天已經解決了,我只是讀取代碼來獲取錯誤。再次感謝 –

0

請檢查

deal.CountryID和country.CountryID的數據類型。這應該是相同的