根据条件

时间:2016-10-24 05:17:29

标签: c# asp.net .net xml linq

以下是我的XML结构。

XML

<Info>
<Details>
<ID>user</ID>
<StartDate>23-10-2016</StartDate>
<EndDate>22-10-2016</EndDate>
</Details>
<Details>
<ID>user1</ID>
<StartDate>23-10-2016</StartDate>
<EndDate>24-10-2016</EndDate>
</Details>
<Details>
<ID>user2</ID>
<StartDate>23-10-2016</StartDate>
<EndDate>22-11-2016</EndDate>
</Details>
</Info>

现在我需要将EndDate节点与今天的日期进行比较。如果EndDate小于今天的日期,那么我需要删除整个Details父节点。对于例如:我们假设strDate是一个具有今天日期的字符串。

下面的代码获取了EndDate的所有值,现在,我如何比较字符串值和循环xml元素并删除它们。

 object[] arr = xDos.Descendants("Details").Elements("EndDate").
                Select(element => element.Value).ToArray();

现在,与今天的日期相比,应删除整个部分。

<Details>
<ID>user</ID>
<StartDate>23-10-2016</StartDate>
<EndDate>22-10-2016</EndDate>
</Details>

真的很感激任何有关此事的建议。

更新1:

 XDocument xDos = XDocument.Load(Server.MapPath("~/Info.xml"));
 XElement xDo = XElement.Load(Server.MapPath("~/Info.xml"));
 List<XElement> arr = xDo.Descendants("Details").Where(n => DateTime.ParseExact(n.Element("EndDate").Value + "", "dd-MM-yyyy", CultureInfo.InvariantCulture) < DateTime.Today.Date).ToList<XElement>();
            for (int i = 0; i < arr.Count(); i++)
            {
                XElement ele = arr[i];
                ele.Remove();
            }               
            xDos.Save(Server.MapPath("~/Info.xml"));

0 个答案:

没有答案