选择“上次匹配元素”之后的“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>

我想选择最后一个 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);

但是这个是不同的,我无法弄清楚。

感谢帮助。

只需选择最后一餐元素:

var lastMeal = noIdea.Elements("Meal").Last();

顺便说一句,您可以简单地将元素转换为DateTime而不是转换字符串值 - 例如 (DateTime)el.Element("MealTime") . 这将在内部使用具有 XML 规范中允许的正确样式的DateTime.Parse

相关内容

  • 没有找到相关文章

最新更新