2009-10-14 81 views
1

似乎是與外的一個Bug亞音速3加入語句,或者也許這只是我的無知,但以下胡扯出來:亞音速外部聯接

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

如果我刪除外部連接,它完美的作品..... – hminaya 2009-10-14 15:52:41

回答

0

他們已經有了問題與IQueryable的:

Blog Entry

只爲您的信息...

+0

老兄,這是一個評論,而不是一個答案;) – sebagomez 2009-10-14 14:36:30

+0

是啊真的......我仍然在尋找一個解決方案。所以博客條目是一個很好的起點... – bastianneu 2009-10-15 08:13:14

+0

我還沒有找到一個解決方案,但這... – hminaya 2009-10-18 01:20:25

1

在這裏振興老話題,但對於那些後來搜索,有一種不同的語法,似乎在SubSonic3中左外連接正常工作。

而不是從原來的職位,做了join ... into ... 重寫它的LINQ表達式的:代替傳統join ... into

from j in Table1.All().Where(x => x.Id == t.PId).DefaultIfEmpty()將做外連接:

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) 
      }; 

的關鍵部分是

希望這有助於!