1
我有以下代码用于从源XML
创建对象列表。我可以在var query
变量中得到要求的结果。从这个结果创建List<Video>
的最佳方法是什么?使用LINQ从xml创建实体对象的最佳方法
注意:如果可能,请首选Method Chaining
方法。
CODE
class Program
{
static void Main(string[] args)
{
string xmlStringInput = @"<videoShop>
<video title=""video1"" path=""videos\video1.wma""><Director>Speilberg</Director></video>
<video title=""video2"" path=""videos\video2.wma""/>
</videoShop>";
XDocument myDoc = XDocument.Parse(xmlStringInput);
var videoElements = (from video in myDoc.Descendants("video") select video).ToList();
foreach (var videoEle in videoElements)
{
//System.Xml.XPath namespace for XPathSelectElement
var directorName = videoEle.XPathSelectElement(@"Director");
}
var query = from video in myDoc.Descendants("video")
select new
{
MyTitle = video.Attribute("title").Value,
MyPath = video.Attribute("path").Value
};
//IEnumerable<XElement> elements = (IEnumerable<XElement>)query;
//List<Video> videoLibrary = (List<Video>)query.ToList<Video>();
Console.WriteLine(query);
Console.ReadLine();
}
}
实体
public class Video
{
public string MyTitle { get; set; }
public string MyPath { get; set; }
}
参考:
- What's the most efficient way to locate and set element values in an XDocument?
- How do I get a list of child elements from XDocument object?
- Creating objects from XML
- C# LINQ with XML, cannot extract multiple fields with same name into object
- How to get XElement's value and not value of all child-nodes?
这是由编译器完成的。它检测到,'var results'实际上是'List