简体   繁体   English

基于2个元素的XML linq查询

[英]Xml linq query based on 2 Elements

How can I return all the "Title" values for a particular 'Author' using linq ? 如何使用linq返回特定“作者”的所有“标题”值?

<Details xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Record>
    <Author>Barry White</Author>
    <Title>First Book</Title>
  </Record>
  <Record>
    <Author>Barry White</Author>
    <Title>Second Book</Title>
  </Record>
  <Record>
    <Author>Norman White</Author>
    <Title>Second Book</Title>
  </Record>
 </Details>
var xDoc = XDocument.Load("Input.xml");

var author = "Barry White";
var titles = (from r in xDoc.Root.Elements("Record")
              let _author = (string)r.Element("Author")
              let _title = (string)r.Element("Title")
              where _author == author
              select _title).ToList();

or using method-based query: 或使用基于方法的查询:

var titles = xDoc.Root.Elements("Record")
                 .Where(r => (string)r.Element("Author") == author)
                 .Select(r => (string)r.Element("Title"))
                 .ToList();

You can use LINQ to XML : 您可以使用LINQ to XML

var titles = XDocument.Parse(inputxml)
                      .Descendants("Record")
                      .Where(x => x.Element("Author").Value == "Barry White")
                      .Select(x => x.Element("Title").Value)
                      .ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM