使用当前日期和接下来三天的XML值填充listBox?

时间:2012-05-08 11:15:57

标签: c# xml linq windows-phone-7 linq-to-xml

  

可能重复:
  Based on date, get todays and the next two days values from XML?

我之前已经提出了一些问题,感谢stackoverflow的出色帮助,我解决了很多主要问题。谢谢你们! 我非常抱歉,如果我的问题很愚蠢,但我在尽可能多地尝试谷歌之前在stackoverflow问这里。

我还有一个工作页面,我可以获得特定的祷告时间并填充文本块。 通过解决方案查看此链接和我标记的问题。我在类和var查询中使用公共时间跨度:

How to make an if statement to show xml attribute based on current time

我仍然在使用穆斯林祈祷时间应用程序,并希望在今天+接下来的3天祷告时间填充一个列表框。

    DateTime myDay = DateTime.Now;
    XDocument loadedCustomData = XDocument.Load("WimPrayerTime.xml");
    var filteredData = from c in loadedCustomData.Descendants("PrayerTime")
                       where c.Attribute("Day").Value == myDay.Day.ToString()
                       && c.Attribute("Month").Value == myDay.Month.ToString()

                       select new PrayerTime()
                       {
                           Fajr = c.Attribute("Fajr").Value,
                           Soloppgang = c.Attribute("Soloppgang").Value,
                           Zohr = c.Attribute("Zohr").Value,
                       };

    listBox1.ItemsSource = filteredData;

我的班级是:

public class Prayertime
{

   public string Fajr { get; set; }
   public string Sunrise { get; set; }
   public string Zohr { get; set; }

}

我的本​​地XML文件(总是自己包含在应用程序中)

<PrayerTime
    Day ="30" 
    Month="4" 
    Fajr="07:00" 
    Sunrise="09:00"
    Zuhr="14:00"
/>
<PrayerTime
    Day ="1" 
    Month="5" 
    Fajr="07:05" 
    Sunrise="09:05"
    Zuhr="14:05"
/>
<PrayerTime
    Day ="2" 
    Month="5" 
    Fajr="07:10" 
    Sunrise="09:10"
    Zuhr="14:10"
/>

首先,如何更改此代码以显示今天的列表以及接下来的三天?

where c.Attribute("Day").Value == myDay.Day.ToString()

或者我应该每天进行一次查询, DateTime NextDay = DateTime.Now.AddDays(1)等等?如何使用这样的三个或四个不同的查询填充相同的listBox? 我可以重复一遍:

listBox1.ItemsSource = filteredData1;
listBox1.ItemsSource = filteredData2;
listBox1.ItemsSource = filteredData3;

此外,月份变化时该怎么办?例如,如果日期为30,则月份为4,则第二天将为值1,而月份应为5?

最后但并非最不重要..当显示我希望listBox显示的信息时:

Monday 30.04.2012
Fajr        07:00
Sunrise     09:00
Zuhr        14:00

Tuesday 01.05.2012
Fajr        07:05
Sunrise     09:10
Zuhr        14:10

其中我在属性名称和值以及上面的日期/日之间有固定的间距。

非常感谢所有花时间阅读的人,并非常感谢所有回答的人:)

1 个答案:

答案 0 :(得分:0)

试试这个:

where int.Parse(c.Attribute("Day").Value) >= myDay.Day && int.Parse(c.Attribute("Day").Value) < (myDay.Day + 3)