2012-01-20 2 views
-1
SELECT * INTO #Loc1 
FROM LocaleStringResource 
Where LanguageId = 1 

SELECT * INTO #Loc2 
FROM LocaleStringResource 
Where LanguageId = 3 

SELECT Loc1.Id, Loc1.LanguageId, Loc1.ResourceName, Loc1.ResourceValue, 
     Loc2.Id, Loc2.LanguageId, Loc2.ResourceName, Loc2.ResourceValue 
FROM   #Loc1 AS Loc1 INNER JOIN 
         #Loc2 AS Loc2 ON Loc1.ResourceName = Loc2.ResourceName 

업데이트 : 이름이 LocaleStringResource 인 테이블이 있습니다. 열 : Id, LanguageId, ResourceName, ResourceValue,linq이 SQL 스크립트를 엔터티로 변환하는 방법?

시스템에 2 개의 언어가 있다고 가정합니다.

Id Language 
1 English 
3 Bangla 

Id LanguageId  ResourceName    ResourceValue 
1 1     Admin.Address    Address 
2 1     Admin.Phone     Phone 
51 3     Admin.Address    SpAddress 
51 3     Admin.Phone     SpPhone 

내가 선택한 언어의 값을 얻습니다. 그래서 관리자 페이지에서 두 언어에 대한 ResourceValue ResourceName에 의해보고 싶어요.

그래서이 결과를 반환하는 결과가 필요합니다. 당신이 직접 변환 할 수 있도록

ResourceName   ResourceValue As EnglishText  ResourceValue As SpanishText 
Admin.Address   Address       SpAddress 
Admin.Phone   Phone        SpPhone 
+0

일부 도움이 필요하면 이미 시도한 것을 보여줄 필요가 있습니다. –

답변

1

엔티티 프레임 워크는 임시 테이블 및 SELECT INTO 건설을 지원하지 않습니다. 응용 프로그램의 논리를 살펴보고 EF와 함께 사용할 수 있도록 변경해야합니다. 그렇지 않으면이 코드를 저장 프로 시저에 랩핑하고 EF에서 호출해야합니다 (btw. 결과 집합에 열 별칭을 사용해야하므로 열 이름 EF와 함께 사용할 때 동일하지 않아야 함).

2
 var loc1 = Context.ObjectSet<LocaleStringResource>.Where(r => r.LanguageId == 1); 
     var loc2 = Context.ObjectSet<LocaleStringResource>.Where(r => r.LanguageId == 2); 
     var result = (
         from l1 in loc1 
         join l2 in loc2 on l1.ResourceName equals l2.ResourceName 
         select new{ 
          ResourceName = l1.ResourceName, 
          EnglishText = l1.ResourceValue, 
          SpanishText = l2.ResourceValue 
         } 
      ).ToList(); 
관련 문제