2010-08-21 8 views
2

Supposons que je le fichier XML suivant:VB.NET: Peupler une liste Linq

<Movies> 
    <Movie ownerName="Ryan"> 
      <Title>The Lord of the Rings Trilogy</Title> 
      <Title>Saving Private Ryan</Title> 
      <Title>etc</Title> 
    </Movie> 
    <Movie ownerName="Rynina"> 
      <Title>Foo</Title> 
      <Title>Bar</Title> 
    </Movie> 
</Movies> 

Ce que je suis après est LINQ à Xml pour récupérer les classes de type MovieCollection. MovieCollection a deux propriétés, OwnerName (String) et Movies (List (Of String)).

En général, je ferais quelque chose comme:

From entry in movies...<Movie>_ 
Select New MovieCollection With { _ 
.OwnerName = [email protected], _ 
.MovieCollection = entry.<Title>.Value} 

Cependant, dans ce cas, ce travail évidemment l'habitude. Y at-il de toute façon pour remplir la liste MovieCollection avec tous les films qui se produisent pour ce propriétaire en utilisant Linq?

Répondre

2

Vous devriez vraiment nommer les étiquettes MovieCollection et TitleMovie.

Parse votre XML avec:

Dim doc = XDocument.Parse("<xml>") 

ou

Dim doc = XDocument.Load("path") 

et utiliser ceci:

Dim movieCollections = From movieCol In doc.Root.Elements("Movie") 
         Select New MovieCollection() With 
           { 
            .OwnerName = movieCol.Attribute("ownerName"), 
            .Movies = movieCol.Elements("Title") 
                 .Select(Function(m) m.Value) 
                 .ToList() 
           } 
+0

Vous venez de me battre (et je le faisais aussi en C#) –

+0

C# est juste plus agréable (peut-être parce que je le sais ;-)) ... –