У меня есть следующая структура XML, мне нужно отфильтровать ее с помощью LINQ по атрибуту «date», где значение атрибута «date» меньше, чем сегодня.
Дата атрибута находится на формат "ггггммддччммсс + зона".
Например, в данной XML дата первого узла = "20200318123000 +0000" означает:
год = 2020,
месяц = 03,
день = 18,
часы = 12,
минут = 30,
секунд = 00 и
timezone = UT C + 0000.
<?xml version="1.0" encoding="utf-8"?>
<books>
<book date="20200318123000 +0000">
<length units="pages">270</length>
<title>Book 1 Title</title>
<category>Book 1 Category</category>
<desc>Book 1 Description</desc>
</book>
<book date="20200319123000 +0000">
<length units="pages">144</length>
<title>Book 2 Title</title>
<category>Book 2 Category</category>
<desc>Book 2 Description</desc>
</book>
</books>
Я пытался сделать это, используя приведенный ниже код, но он ничего не возвращает в "IEnumerable elements" вместо отфильтрованных узлов.
XDocument xDocument = XDocument.Load(fileName);
DateTime t;
IEnumerable<XElement> elements = xDocument.Descendants("book")
.Where(d => d.NodeType == XmlNodeType.Attribute && d.Name.Equals("date") &&
DateTime.TryParse(d.ToString().Split('+').First().Trim(), out t) && t <
DateTime.Today)
.ToList();