2014-04-22 2 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; } 
    } 

내가 마지막에 오류가 가입 . "join 절의 표현식 중 하나의 유형이 잘못되었습니다. 'Join'에 대한 호출에서 형식 유추가 실패했습니다." 무엇을 놓쳤습니까? 들으

+2

모두 체크가 동일한 datatyope을 가질 수도 있습니다. int는 2 번째가 길 것입니다. –

+0

마지막으로 'join'에서 필드의 데이터 유형은 무엇입니까? –

+0

내가 의심하는 오류 였지만 그 이유를 알 수 없었습니다. 하나는 uniqueID이고 다른 하나는 Int입니다. 문제를 해결하면 문제가 해결되지만 이제는이 오류가 발생합니다. "AnonymousType # 1에는 'ToList'에 대한 정의가없고 확장 메서드 'ToList'가 없습니다." 수업에서 메소드를 만들고 ovveride해야합니까? 답변? –

답변

0

오류 : "ToList '및 확장 메서드'ToList '"에 대한 정의가 포함되어 있지 않은 AnonymousType # 1, 다음을 수행 할 수 있습니다.

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

작동하지만 List 을 List 으로 변환 할 수 없다고합니다. 이걸 알아낼거야. 감사합니다. –

+0

예 (답)에 답을 입력하지 않았습니다. 내 대답을 확인 나는 그것에 답변 클래스를 추가했다. 당신이 "AnonymousType"을 의미하는 new로만 선택한다면 List 으로 변환 할 수 없습니다. 그래서 타입을 지정해야합니다. –

+0

예. 저는 어제 그것을 이미 풀었습니다. 오류를 얻으려면 코드를 읽어야했습니다. 다시 한 번 감사드립니다. –

0

deal.CountryID 및 country.CountryID의 데이터 유형을 확인하시기 바랍니다. 이 동일해야합니다

관련 문제