Select XML 最后一个匹配元素之后的元素
Select XML Elements after last matching Element
我有 XML 个文件,如下所示:
<Meal>
<MealName>Lunch</MealName>
<MealData>blahblahblah</MealData>
<MealTime>2015-03-12</MealTime>
</Meal>
<Meal>
<MealName>Dinner</MealName>
<MealData>lolololol</MealData>
<MealTime>2015-04-27</MealTime>
</Meal>
我想要 select 最后一个 Meal 实例的 MealName 和 MealData。
我可以用简单的 LINQ 查询完成我需要的一切。例如,要获取上周用餐的数据,我会这样做:
XElement noIdea = XElement.Load(".../.../meal.xml");
DateTime d = DateTime.Today.AddDays(-7);
int offset = d.DayOfWeek - DayOfWeek.Monday;
DateTime lastMonday = d.AddDays(-offset);
DateTime lastSunday = lastMonday.AddDays(6);
IEnumerable<XElement> idkMealTime =
from el in noIdea.Elements("Meal")
where DateTime.Compare(Convert.ToDateTime(el.Element("MealTime").Value), lastMonday) > 0 &&
DateTime.Compare(Convert.ToDateTime(el.Element("MealTime").Value), lastSunday) < 0
select el;
WhatHaveYouEaten(idkMealTime);
但是这个不一样,我想不通。
感谢帮助。
干脆select最后一餐元素:
var lastMeal = noIdea.Elements("Meal").Last();
顺便说一句,您可以简单地将元素转换为 DateTime
而不是转换字符串值 - 例如(DateTime)el.Element("MealTime")
。这在内部使用 DateTime.Parse
以及 XML 规范中允许的正确样式。
我有 XML 个文件,如下所示:
<Meal>
<MealName>Lunch</MealName>
<MealData>blahblahblah</MealData>
<MealTime>2015-03-12</MealTime>
</Meal>
<Meal>
<MealName>Dinner</MealName>
<MealData>lolololol</MealData>
<MealTime>2015-04-27</MealTime>
</Meal>
我想要 select 最后一个 Meal 实例的 MealName 和 MealData。
我可以用简单的 LINQ 查询完成我需要的一切。例如,要获取上周用餐的数据,我会这样做:
XElement noIdea = XElement.Load(".../.../meal.xml");
DateTime d = DateTime.Today.AddDays(-7);
int offset = d.DayOfWeek - DayOfWeek.Monday;
DateTime lastMonday = d.AddDays(-offset);
DateTime lastSunday = lastMonday.AddDays(6);
IEnumerable<XElement> idkMealTime =
from el in noIdea.Elements("Meal")
where DateTime.Compare(Convert.ToDateTime(el.Element("MealTime").Value), lastMonday) > 0 &&
DateTime.Compare(Convert.ToDateTime(el.Element("MealTime").Value), lastSunday) < 0
select el;
WhatHaveYouEaten(idkMealTime);
但是这个不一样,我想不通。
感谢帮助。
干脆select最后一餐元素:
var lastMeal = noIdea.Elements("Meal").Last();
顺便说一句,您可以简单地将元素转换为 DateTime
而不是转换字符串值 - 例如(DateTime)el.Element("MealTime")
。这在内部使用 DateTime.Parse
以及 XML 规范中允许的正确样式。