Как я могу вернуть все значения «Title» для определенного «Author» с помощью 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>
0
matinau 11 Янв 2014 в 04:24

2 ответа

Лучший ответ
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();

Или используя запрос на основе метода:

var titles = xDoc.Root.Elements("Record")
                 .Where(r => (string)r.Element("Author") == author)
                 .Select(r => (string)r.Element("Title"))
                 .ToList();
2
MarcinJuraszek 11 Янв 2014 в 00:32