通过C#LINQ to XML

我是LINQ的新手。 我理解它的目的。 但我无法弄明白。 我有一个XML集,如下所示:

  1 John Smith john@example.com   2 Bill Young bill@example.com   

我已将此XML加载到XDocument中:

 string xmlText = GetXML(); XDocument xml = XDocument.Parse(xmlText); 

现在,我正在尝试将结果转换为POCO格式。 为了做到这一点,我目前正在使用:

 var objects = from results in xml.Descendants("Results") select new Results // I'm stuck 

如何通过LINQ获取Result元素的集合? 我对代码中此时导航XML结构感到特别困惑。

谢谢!

这将返回IEnumerable的匿名类:

 var q = from result in xml.Descendants select new { ID = result.Descendants("ID"), Name= result.Descendants("Name"), EmailAddress= result.Descendants("EmailAddress") }; 

或者如果您定义了类`Result,例如:

 class Result { public ID { get; set; } public Name { get; set; } public EmailAddress { get; set; } } 

然后:

 var q = from result in xml.Descendants select new Result { ID = result.Descendants("ID"), Name = result.Descendants("Name"), EmailAddress = result.Descendants("EmailAddress") }; 

(返回IEnumerable

如果您的Results子元素只是Result元素,那么您可以像这样获取它们:

 var objects = from result in xml.Descendants select result; 

但在这个幸运的情况下,你可以使用xml.Descendants。

如果它不仅是Result元素,那么这样做会很好:

 var object = from result in xml.Descendants where result.Name == "Result" select result; 

如果您是LINQ的新手,您还可以在此问题中找到非常有用的链接