使用LINQ从xml创建实体对象的最佳方法
我有以下代码用于从源XML
创建对象列表。 我可以在var query
变量中获得需求结果。 从此结果创建List
的最佳方法是什么?
注意:如果可能,请选择Method Chaining
方法。
码
class Program { static void Main(string[] args) { string xmlStringInput = @" "; 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 elements = (IEnumerable)query; //List
实体
public class Video { public string MyTitle { get; set; } public string MyPath { get; set; } }
参考 :
- 在XDocument中定位和设置元素值的最有效方法是什么?
- 如何从XDocument对象获取子元素列表?
- 从XML创建对象
- C#LINQ with XML,无法将具有相同名称的多个字段提取到对象中
- 如何获取XElement的值而不是所有子节点的值?
var query = from vin myDoc.Descendants("video") select new Video { MyTitle = (string)v.Attribute("title"), MyPath = (string)v.Attribute("path") }; // var means List here var results = query.ToList();
或者没有query
变量:
// var means List here var results = (from vin myDoc.Descendants("video") select new Video { MyTitle = (string)v.Attribute("title"), MyPath = (string)v.Attribute("path") }).ToList();
基于方法的查询:
var results = myDoc.Descendants("video") .Select(v => new Video() { MyTitle = (string)v.Attribute("title"), MyPath = (string)v.Attribute("path") }).ToList();