1

SubSonic 3 中的 Outer Join 语句似乎有一个错误,或者这只是我的无知,但以下废话:

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
4

2 回答 2

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

希望这会有所帮助!

于 2011-05-05T17:52:40.690 回答
0

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

博客条目

仅供您参考...

于 2009-10-14T14:33:56.057 回答