我有以下查询:
var query =
from modules in _Context.Modules
join moduleStrings in _Context.ModuleStrings on modules.MID equals moduleStrings.MID
join strings in _Context.Strings on moduleStrings.SID equals strings.SID
join stringTexts in _Context.StringTexts on strings.SID equals stringTexts.SID into stringsEmpty
from stringTexts in stringsEmpty.DefaultIfEmpty()
join languages in _Context.Languages on stringTexts.LID equals languages.LID
where modules.MID == MID && LID == languages.LID
select new GridData6S()
{
Name = strings.Name,
Text = stringTexts != null ? stringTexts.Text : ""
};
我想加入它,以便在stringTexts为空时看到空文本。
这可能是一件小事,但我已经看了一个小时,但无法理解。这是我最接近的。
答案 0 :(得分:0)
您正在过滤掉任何非LID = languages.LID的语言,因此当languages / stringTexts为null时,此条件永远不会为真。
另外,您似乎加入语言表的唯一原因是获取LID也是连接条件,您可以跳过加入语言
模块也是如此.....
这可能有所帮助,而且更简单
var query =
from moduleStrings in _Context.ModuleStrings
join strings in _Context.Strings on moduleStrings.SID equals strings.SID
join stringTexts1 in _Context.StringTexts.Where(x=>x.LID==LID) on strings.SID equals stringTexts.SID into stringsEmpty
from stringTexts in stringsEmpty.DefaultIfEmpty()
where moduleStrings.MID == MID
select new GridData6S()
{
Name = strings.Name,
Text = stringTexts != null ? stringTexts.Text : ""
};