Как преобразовать этот скрипт SQL в linq для сущности? - PullRequest
0 голосов
/ 20 января 2012
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,

Предположим, у меня в системе 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 я получаю значение выбранного языка. Итак, на странице администратора я хочу увидеть ResourceName, каковы ResourceValue для обоих языков.

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

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

Ответы [ 2 ]

2 голосов
/ 20 января 2012
        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();
1 голос
/ 20 января 2012

Entity Framework не поддерживает временные таблицы и конструкцию SELECT INTO, поэтому вы не можете напрямую конвертировать ее.Вы должны пройти логику вашего приложения и изменить его так, чтобы он мог использоваться с EF, или вы должны заключить этот код в хранимую процедуру и вызывать его из EF (кстати, вам придется использовать псевдонимы столбцов для набора результатов, поскольку имена столбцовне должно быть одинаковым при использовании с EF).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...