我是LINQ的新手。我理解它的目的。但我无法弄明白。我有一个XML集,如下所示:
<Results>
<Result>
<ID>1</ID>
<Name>John Smith</Name>
<EmailAddress>john@example.com</EmailAddress>
</Result>
<Result>
<ID>2</ID>
<Name>Bill Young</Name>
<EmailAddress>bill@example.com</EmailAddress>
</Result>
</Results>
我已将此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结构感到特别困惑。
谢谢!
答案 0 :(得分:3)
这将返回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<Result>
)
答案 1 :(得分:0)
如果您的结果子元素只是结果元素,那么您可以这样得到它们:
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;
答案 2 :(得分:0)
如果您是LINQ的新手,您还可以在this question
中找到非常有用的链接