VB.NET: заполнение списка в Linq - PullRequest
       11

VB.NET: заполнение списка в Linq

2 голосов
/ 21 августа 2010

Предположим, у меня есть следующий XML-файл:

<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 to Xml для извлечения классов типа MovieCollection. MovieCollection имеет два свойства: OwnerName (строка) и Movies (список (строка)).

Как правило, я бы сделал что-то вроде:

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

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

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

Вы должны действительно назвать теги Movie MovieCollection и Title Movie.

Разобрать ваш 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 голосов
/ 29 ноября 2011

Попробуйте использовать сериализацию

http://support.microsoft.com/kb/316730

...