VB.NET:在Linq中填充列表

时间:2010-08-21 13:03:25

标签: .net vb.net collections linq-to-xml

假设我有以下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(String)和Movies(List(Of String))。

一般来说,我会做类似的事情:

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

然而在这种情况下,这显然不会起作用。无论如何要使用Linq来填充MovieCollection列表中包含该所有者的所有电影吗?

2 个答案:

答案 0 :(得分:2)

您应该为代码Movie MovieCollectionTitle 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()
                              }

答案 1 :(得分:0)