SubSonic外部加入

时间:2009-10-14 13:27:33

标签: linq subsonic subsonic3 outer-join

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

2 个答案:

答案 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)

他们已经遇到了IQueryable的问题:

Blog Entry

仅供参考...