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 

Update: У меня есть таблица с именем - LocaleStringResource. Столбцы: Id, LanguageId, ResourceName, ResourceValue,Как преобразовать этот sql-скрипт в linq в entity?

Предположим, у меня есть 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 

от ResourceName Я получаю значение для выбранного языка. Таким образом, из страницы admin, которую я хочу увидеть по ResourceName, что ResourceValue для обоих языков.

Так что мне нужен набор результатов, который возвращает что-то вроде этого.

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

Вам необходимо показать, что вы уже пробовали, если хотите помочь. –

ответ

1

Entity Framework не поддерживает временные таблицы и SELECT INTO конструкцию, так что вы не можете напрямую конвертировать его. Вы должны пройти логику своего приложения и изменить его так, чтобы его можно было использовать с EF, или вы должны перенести этот код в хранимую процедуру и вызвать его из EF (кстати, вам придется использовать псевдонимы столбцов для набора результатов, поскольку имена столбцов не должны быть одинаковыми при использовании с 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(); 
Смежные вопросы