2013-02-17 4 views
1

누군가 아래 정보에 대한 올바른 구문을 알려주십시오. 다음과 같은 오류와LINQ 디자인 타임 컴파일 오류

&& a.applicationid equals ga.applicationid 

: "A 쿼리 몸이 SELECT 절 또는 그룹 절로 끝나야합니다"

는 내가이 다음 장소에 키워드를 "동일"로 시작하는 디자인 타임 컴파일 오류가 ....

public static List<ApplicationConfigurations> GetAppConfigs() 
     { 
      try 
      { 
       using (wmswebEntities DbContext = new wmswebEntities()) 
       { 
        IEnumerable<ApplicationConfigurations> myAppConfigs = new IEnumerable<ApplicationConfigurations>(); 

        myAppConfigs = (from a in DbContext.ApplicationConfigurations 
            join ga in DbContext.groupapplicationconfigurationslk on a.configurationid equals ga.configurationid 
            && a.applicationid equals ga.applicationid 
            join g in DbContext.Groups on g.groupnumber equals ga.groupnumber 
            where a.ActiveFlag == true 
             && ga.ActiveFlag == true 
             && g.ActiveFlag == true 
            select 
             a.applicationconfigurations, 
             g.groupnumber).ToList(); 

        return myAppConfigs; 
       } 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 

답변

2

에 대한 답변

나는 오류가 무엇을 의미하는지 이해하지만, 나는 구문 오류가 무엇인지 볼 수 없습니다 10은 LINQ의 두 필드에 참여할 수없는 이유에 대한 아주 좋은 설명입니다. 또한 익명 형식을 사용하여 조인을 수행하거나 단순히 조건 중 하나를 where 절로 옮길 수 있다고 제안합니다. 그는 하나의 조건에 join을 사용하고 다른 하나에는 where을 사용하고 익명 유형에는 join을 사용하는 방법을 설명하기 위해 LINQPad에 간단한 예를 들어 설명합니다.

var applicationConfigs = new[] { 
    new { ApplicationID = 1, ConfigurationID = 1, Name = "Application #1" }, 
    new { ApplicationID = 2, ConfigurationID = 1, Name = "Application #2" }, 
    new { ApplicationID = 3, ConfigurationID = 2, Name = "Application #3" }, 
    new { ApplicationID = 4, ConfigurationID = 2, Name = "Application #4" } 
}; 
var groupApplicationConfigs = new[] { 
    new { ApplicationID = 1, ConfigurationID = 1, Name = "Group App Config #1" }, 
    new { ApplicationID = 1, ConfigurationID = 1, Name = "Group App Config #2" }, 
    new { ApplicationID = 2, ConfigurationID = 1, Name = "Group App Config #3" }, 
    new { ApplicationID = 3, ConfigurationID = 1, Name = "Group App Config #4" } 
}; 

//JOIN + WHERE 
var q = from a in applicationConfigs 
     join ga in groupApplicationConfigs 
      on a.ApplicationID equals ga.ApplicationID 
     where a.ConfigurationID == ga.ConfigurationID 
     select a; 
Console.WriteLine(q); 

//ANONYMOUS TYPE 
var r = from a in applicationConfigs 
     join ga in groupApplicationConfigs 
      on new { a.ApplicationID, a.ConfigurationID } equals 
       new { ga.ApplicationID, ga.ConfigurationID } 
     select a; 
Console.WriteLine(r); 
+0

답장을 보내 주셔서 감사합니다. 저는 후자를 구현했으며 현재 문제가 없습니다. – sagesky36

+0

쿨! 다행스럽게 도울 수있어! – rsbarro