2010-08-21 5 views
2

Предположим, у меня есть следующий XML-файл:VB.NET: Наполнение список в 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> 

То, что я после использования Linq для Xml, чтобы получить классы типа MovieCollection. MovieCollection имеет два свойства: OwnerName (String) и фильмы (List (Of String)).

Вообще, я хотел бы сделать что-то вроде:

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

Однако в данном случае это, очевидно, не будет работать. Есть ли все-таки, чтобы заполнить список MovieCollection всеми фильмами, которые происходят для этого владельца, используя Linq?

ответ

2

Вы должны действительно назвать теги MovieMovieCollection и TitleMovie.

Разбираем ваш XML с:

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

или

Dim doc = XDocument.Load("path") 

и использовать это:

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

Вы просто избили меня (и я тоже делал это на C#) –

+0

C# просто приятнее (возможно, потому что я это знаю ;-)) ... –

Смежные вопросы