2017-08-02 71 views
-1

我找不到在當前.net版本中可用的解決方案。VB.net LINQ Left與所有結果加入

我有一個訂單列表,我有一些訂單的附加信息列表。 (該訂單可以或不可以有額外的信息)。 我正在尋找如何顯示所有訂單和其他信息(如果存在)。

我想這一點:

 Dim res = From k In o.OrdemItens 
      Join r In aditionalInformation On r.idReqCTP Equals k.Controle 
      Group By k.Controle Into Group 
      From g In Group.DefaultIfEmpty 
      Select g.k.Controle, g.r.Status 

但它不工作。如果訂單沒有附加信息,則不會返回任何內容。

有人可以幫我嗎? 謝謝。

回答

1

我想你想使用Group Join這是在VB明確:

Dim res = From k In o.OrdemItens 
      Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group 
      Select k.Controle, Statuses = (From r2 In rj Select r2.Status) 

我不知道,如果你可能有多個比賽中rj對於給定k,所以我跑了Select反對。

如果你不想在狀態的列表,你可以壓平:

Dim res = From k In o.OrdemItens 
      Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group 
      From r2 in rj.DefaultIfEmpty() 
      Select k.Controle, r2?.Status 

不能使用?.的數據庫,所以你要做的:

Dim res = From k In o.OrdemItens 
      Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group 
      From r2 in rj.DefaultIfEmpty() 
      Select k.Controle, Status = If(r2 Is Nothing, Nothing, r2.Status) 
+0

謝謝您。有效。 我不得不添加「...到rj = Group ...」才能正常工作。 – osmarditto

+0

很抱歉 - 主要是C#用戶。 – NetMage