代码之家  ›  专栏  ›  技术社区  ›  Hector Minaya

亚音速外连接

  •  1
  • Hector Minaya  · 技术社区  · 15 年前

    在亚音速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 回复  |  直到 13 年前
        1
  •  0
  •   bastianneu    15 年前

    他们已经对iqueryable有问题:

    Blog Entry

    仅供参考…

        2
  •  1
  •   CodingWithSpike    13 年前

    在这里恢复一个旧的主题,但是对于以后搜索的主题,有一个不同的语法,似乎可以在Subsonic3中正确地用于左外部联接。

    而不是执行 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

    希望这有帮助!

    推荐文章