2010-03-10 5 views
0

J'essaie d'utiliser LINQ pour interroger des objets. Je suis en train de faire ce qui suit:Linq To Objects Outer Join

Dim myList As Generic.List(Of MyItem) = (From ThisItem In LinqToSqlObject.Items _ 
             Join Folder In LinqToSqlObject.Folders _ 
             On Folder.Id Equals Item.Id _ 
             Join thisParentItem As Item In LinqToSqlObject.Items _ 
             On thisParentItem.Id Equals Item.ItemId _ 
             Select New MyItem With {.ItemName = Item.Name, _ 
             .ParentItemName = thisParentItem.Name}).ToList 

Ceci cependant ne retournera aucun élément qui a un ParentItemId de null. J'essaie de faire une jointure à gauche pour retourner tout "Item", qu'il soit parent ou non. Je suis conscient que cela est réalisable en C# en ajoutant un "dans X" sur la jointure, et en sélectionnant à partir de X.DefaultIfEmpty(), cela ne semble pas fonctionner dans VB.Net.

Est-ce que quelqu'un sait comment faire cela?

Merci

+0

double possible de [LINQ to SQL: jointures externes gauche multiple] (http://stackoverflow.com/questions/267488/linq-to-sql-multiple-left- external-joins) – Matt

Répondre

0

Essayez this exemple.

Modifier: Oups manqué l'exigence de vb.net, désolé.

Essayez this answer pour une question similaire.

Edit du Edit (je suis sur un rouleau)

posté un lien vers la mauvaise réponse, mais même question.

La réponse est vb.net here

+0

Salut @Mike, je l'ai vu (excellent site web), mais comme indiqué dans la question, je suis conscient que cela est possible en C# (selon le code de votre lien), mais je ne peux pas l'obtenir travailler dans VB.Net. – Ben

+0

@Ben - désolé, je l'ai manqué dans le premier passage. J'ai mis à jour la réponse avec un lien basé sur vb.net. Désolé pour ça. –

+0

@Ben, l'a fait à nouveau, posté le mauvais lien. Je le répare. Juste pas ma nuit. –