【发布时间】:2011-01-25 22:49:01
【问题描述】:
可能是一个小问题,但我不明白这里出了什么问题。
下面的代码针对一个 XML 文件(示例也在下面),并尝试从元素“eventBlocks”的所有后代的所有相同事件中计算绝对最小日期和绝对最大日期。 (所有“EventC”元素的最早/最新日期,...)
如您所见,“ElementC”(例如)的结束日期之一的结束日期为“2011 年 1 月 14 日”。这应该是我的 MaxDateTo 值。但结果显示计算的 maxEndDate 为 '1/6/2011' 并忽略了正确的值。
我假设比较器将它作为字符串或整数并提供错误的结果。
我需要做什么(以及如何)才能计算出正确的最大和最小日期?
提前致谢 马库斯
var xmlDoc = XDocument.Load(@"c:\Temp\MergedCalendar2011.xml");
var result = from vb in xmlDoc.Descendants("eventBlock")
group vb by vb.Attribute("eventName").Value into blocks
orderby blocks.Key ascending
select new
{
BlockName = blocks.Key,
MinDateFrom = blocks.Min(min => min.Attribute("start").Value),
MaxDateTo = blocks.Max(max => max.Attribute("end").Value),
};
这是 XML:
<?xml version="1.0" standalone="yes"?>
<year year="2011" id="year2011">
<state name="Baden Wuerttemberg" >
<eventBlocks>
<eventBlock eventName="EventX" start="4/21/2011" end="4/22/2011" />
<eventBlock eventName="EventX" start="4/26/2011" end="5/1/2011" />
<eventBlock eventName="EventZ" start="6/14/2011" end="6/26/2011" />
<eventBlock eventName="EventA" start="7/28/2011" end="9/11/2011" />
<eventBlock eventName="EventB" start="10/31/2011" end="11/1/2011" />
<eventBlock eventName="EventB" start="11/2/2011" end="11/5/2011" />
<eventBlock eventName="EventC" start="1/1/2011" end="1/14/2011" />
<eventBlock eventName="EventC" start="12/23/2011" end="1/14/2012" />
</eventBlocks>
</state>
<state name="Brandenburg" >
<eventBlocks>
<eventBlock eventName="EventY" start="1/31/2011" end="2/6/2011" />
<eventBlock eventName="EventX" start="4/20/2011" end="5/1/2011" />
<eventBlock eventName="EventZ" start="6/3/2011" end="6/4/2011" />
<eventBlock eventName="EventA" start="6/30/2011" end="8/14/2011" />
<eventBlock eventName="EventB" start="10/4/2011" end="10/15/2011" />
<eventBlock eventName="EventC" start="1/1/2011" end="1/2/2011" />
<eventBlock eventName="EventC" start="12/23/2011" end="1/1/2012" />
</eventBlocks>
</state>
<state name="Bremen">
<eventBlocks>
<eventBlock eventName="EventY" start="1/31/2011" end="2/2/2011" />
<eventBlock eventName="EventX" start="4/16/2011" end="5/1/2011" />
<eventBlock eventName="EventZ" start="6/3/2011" end="6/4/2011" />
<eventBlock eventName="EventZ" start="6/14/2011" end="6/15/2011" />
<eventBlock eventName="EventA" start="7/7/2011" end="8/18/2011" />
<eventBlock eventName="EventB" start="10/17/2011" end="10/30/2011" />
<eventBlock eventName="EventC" start="1/1/2011" end="1/6/2011" />
<eventBlock eventName="EventC" start="12/23/2011" end="1/1/2012" />
</eventBlocks>
</state>
</year>
【问题讨论】:
标签: linq linq-to-xml