根据日期,从XML获取今天和接下来两天的值?

目标:根据今天的日期和月份,从XML获取实际值和接下来的两天值。

问题:虽然我的c.Attribute(“Day”)。值更改,但我的c.Attribute(“Month”)。值保持不变。 因此,如果实际的一天我在2012年4月30日,那么它将显示30.04.2012而不是01.05.2012和02.05.2012的prayertimes。 怎么解决这个?

此外,我不确定这个Dato = c.Attribute("Day").Value + "." + c.Attribute("Month").Value + "." + myDay.Year.ToString(), Dato = c.Attribute("Day").Value + "." + c.Attribute("Month").Value + "." + myDay.Year.ToString(), Dato = c.Attribute("Day").Value + "." + c.Attribute("Month").Value + "." + myDay.Year.ToString(),有什么好处? 我希望列表框显示它获取的xml的日期。

请帮忙。 我的代码,XML和类如下。

 var filteredData3 = from c in loadedCustomData.Descendants("PrayerTime") where int.Parse(c.Attribute("Day").Value) >= myDay.Day && int.Parse(c.Attribute("Day").Value) < (myDay.Day + 3) && c.Attribute("Month").Value == myDay.Month.ToString() select new Bønn() { Dato = c.Attribute("Day").Value + "." + c.Attribute("Month").Value + "." + myDay.Year.ToString(), Fajr = TimeSpan.Parse(c.Attribute("Fajr").Value), Sunrise = TimeSpan.Parse(c.Attribute("Sunrise").Value), Zohr = TimeSpan.Parse(c.Attribute("Zohr").Value), Asr = TimeSpan.Parse(c.Attribute("Asr").Value), Maghrib = TimeSpan.Parse(c.Attribute("Maghrib").Value), Isha = TimeSpan.Parse(c.Attribute("Isha").Value), Jumma = TimeSpan.Parse(c.Attribute("Jumma").Value), }; listBox1.ItemsSource = filteredData3; 

这是我的class级:

 public class Bønn { public TimeSpan Fajr { get; set; } public TimeSpan Sunrise { get; set; } public TimeSpan Zohr { get; set; } public TimeSpan Asr { get; set; } public TimeSpan Maghrib { get; set; } public TimeSpan Isha { get; set; } public TimeSpan Jumma { get; set; } public string Dato { get; set; } } 

这是我的XML:

    

我建议你改变你的“模型”类,使用DateTime而不是string作为日期。 将所有元素转换为模型类, 然后进行过滤。 它比尝试根据属性进行算术要简单得多。

另请注意,使用XAttribute的显式转换比调用int.Parse更简单。 我实际上建议在你的模型类中创建一个静态的FromXElement方法,这样你就可以写:

 DateTime start = DateTime.Today; // We'll use this as an *exclusive* upper bound DateTime end = start.AddDays(3); var query = from c in loadedCustomData.Descendants("PrayerTime") let bonn = Bønn.FromXElement(c) where bonn.Dato >= start && bonn.Dato < end; select bonn; 

或者在扩展方法语法中:

 // start and end as before var query = loadedCustomData.Descendants("PrayerTime") .Select(c => Bønn.FromXElement(c)) .Where(bonn => bonn.Dato >= start && bonn.Dato < end);