ResourceTranslation
--------------------------------------------
ID binary(16) |
ShortStringResourceID binary(16) |
LocaleName varchar(50) |
TranslatedText text |
--------------------------------------------
ShortStringresource
--------------------------------------------
ID binary(16) |
PrimaryLocaleName varchar(50) |
ContentText varchar(255) |
--------------------------------------------
我想在 LINQ to SQL 中实现以下 SQL 的等效项:
SELECT (CASE p.PrimaryLocaleName WHEN 'en-GB' THEN p.ContentText ELSE t.ContentText END)
FROM shortstringresource p
LEFT OUTER JOIN resourcetranslation t ON t.ShortStringResourceID = p.ID
WHERE p.ContentText = "Question 1 English Text"
AND (p.PrimaryLocaleName = 'en-GB' OR t.LocaleName = 'en-GB')
LIMIT 1;
或者将以下 2 个查询加入 1 个:
var qry1 = (from p in I18nObjects.ShortStringResources
where (p.PrimaryLocaleName == "en-GB" && p.ContentText == "my text")
select p.ContentText);
var qry2 = (from t in I18nObjects.ResourceTranslations
where t.LocaleName == "en-GB"
join p in I18nObjects.ShortStringResources on t.ShortStringResourceID equals p.ID
select t.TranslatedText);