linq - Calculate Max and Min Dates with LINQ2XML -


maybe litte issue, don't understand what's running wrong here.

the code below targeting xml file (sample below) , trys calculate absolute min date , absolute max date same events on descendants of element 'eventblocks'. (earliest/latest date of 'eventc' elements, ...)

as can see 1 of enddates 'elementc' (for eaxample) has enddate '1/14/2011'. should maxdateto value. result shows calculated maxenddate of '1/6/2011'and ignores right value.

i asume comparer takes string or int , provides wrong result.

what (and how) have correct max , min dates calculated?

thanks in advance marcus

 var xmldoc = xdocument.load(@"c:\temp\mergedcalendar2011.xml");      var result = vb in xmldoc.descendants("eventblock")                  group vb vb.attribute("eventname").value 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),                  }; 

this 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> 

you should convert start/end strings date in query:

mindatefrom = blocks.min(min => datetime.parseexact(min.attribute("start").value, "m/d/yyyy", cultureinfo.invariantculture)), maxdateto = blocks.max(max =>  datetime.parseexact(max.attribute("end").value, "m/d/yyyy", cultureinfo.invariantculture)), 

Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -