SubSonic 3中的外连接语句似乎有一个Bug,或者可能只是我的无知,但是下面的内容出现了:
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)
};
。通过
The expression of type 'System.Linq.IQueryable` xxxx is not a sequence
答案 0 :(得分:1)
在这里复兴一个旧主题,但是对于那些后来搜索的人来说,有一种不同的语法似乎在SubSonic3中正确地用于左外连接。
而不是原始帖子中的Linq表达式join ... into ...
将其重写为:
var Objeto = from t in Table1.All()
join su in table2.All() on t.Id equals su.Id
from j in Table1.All().Where(x => x.Id == t.PId).DefaultIfEmpty()
select new
{
t.Field1,
SN = su.Field123,
PTN = (j == null ? null : j.FieldABC)
};
关键部分是:from j in Table1.All().Where(x => x.Id == t.PId).DefaultIfEmpty()
将执行外部联接,而不是传统的join ... into
希望这有帮助!
答案 1 :(得分:0)