2012-01-20 6 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 

私は値が選択された言語のものであることを知っています。だからadminのページから私は両方の言語の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(); 
関連する問題