【问题标题】:SubSonic Outer Join亚音速外连接
【发布时间】:2010-12-06 16:16:16
【问题描述】:

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

【问题讨论】:

  • 如果我移除外部连接,它会完美运行.....

标签: linq subsonic subsonic3 outer-join


【解决方案1】:

在这里恢复一个老话题,但对于那些稍后搜索的人来说,有一种不同的语法似乎在 SubSonic3 中可以正常工作,用于左外连接。

而不是原始帖子中执行join ... into ... 的Linq 表达式 改写为:

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

    Blog Entry

    仅供参考...

    【讨论】:

    • 老兄,这是评论,不是答案;)
    • 是的,我仍在寻找解决方案。所以博客条目是一个很好的起点......
    • 现在的答案似乎是这是 SubSonic 中的一个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多