2017-08-02 17 views
-1

Ich konnte keine Lösung finden, die in der aktuellen .net-Version funktioniert.VB.net LINQ Links Beitreten mit allen Ergebnissen

Ich habe eine Liste von Bestellungen und ich habe eine Liste mit zusätzlichen Informationen für einige Bestellung. (Der Auftrag konnte oder konnte keine zusätzlichen Informationen haben). Ich suche, wie man ALLE AUFTRÄGE und zusätzliche Informationen zeigt (wenn es existiert).

Ich versuche dies:

 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 

Aber es funktioniert nicht. Wenn die Bestellung keine zusätzlichen Informationen enthält, wird nichts zurückgegeben.

Könnte mir jemand helfen plz? Danke.

Antwort

1

Ich glaube, Sie einen Group Join verwenden möchten, die in VB explizit:

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) 

Ich wusste nicht, ob Sie k mehrere Treffer in rj für einen bestimmten haben könnte, so lief ich ein Select dagegen .

Wenn Sie nicht über eine Liste in Status möchten, können Sie es verflachen:

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 

Sie nicht ?. für eine Datenbank verwenden können, so dass Sie zu tun haben:

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

Thank Sie. Es funktionierte. Ich musste "... in rj = Group ..." hinzufügen, um auch zu arbeiten. – osmarditto

+0

Entschuldigung - meistens ein C# -Benutzer. – NetMage