我想在此查询中使用第二个连接语句执行外连接,我不断遇到奇怪的错误! (它必须是第3个RedBull)
var Objeto = from t in Table1.All()
join su in table2.All() on t.Id equals su.Id
join tab2 in Table1.All() on t.PId equals tab2.Id //<-I want it here
select new
{
t.Field1,
SN = su.Field123,
PTN = tab2.FieldABC
};
任何帮助都将不胜感激。
[编辑] - 我忽略了说我正在使用SubSonic 3.0,这个漏洞似乎与SubSonic有关......
答案 0 :(得分:4)
执行外部联接需要两个步骤:
into
DefaultIfEmpty()
生成您期望的null
值。您还需要向null
添加select
项检查。
var Objeto = from t in Table1.All()
join su in table2.All() on t.Id equals su.Id
join tab2 in Table1.All() on t.PId equals tab2.Id into gj
from j in gj.DefaultIfEmpty()
select new
{
t.Field1,
SN = su.Field123,
PTN = (j == null ? null : j.FieldABC)
};