2012-05-11 13 views
0

リストボックスに、今日、明日、翌日の祈りの時間を入れたいと思います。 XMLには、年ではなく、日と月の値があります。 明日または明日の翌日が翌年でなければ、問合せは問題なく動作します。 次に、01.01の値と02.01の値と31.12の値がリストに表示されます。リストボックスを日付順にソートし、日付を「dddd」に続けて日付を表示しますか?

質問: 1)日付に応じて昇順に並べ替える方法 2) "Date"を修正する方法。この値は "01.01.2012 12:00 AM"ではなく、月曜日01.01.2012として表示されます。 2)01.01と02.01を2012年ではなく2013年に表示する方法。

これは私のリストボックスで、次のように示しています

01.01.2012 12:00AM 
Fajr 07:00 
Soloppgang 09:19 
etc.. 

02.01.2012 12:00AM 
Fajr 07:00 
Soloppgang 09:19 
etc.. 

31.12.2012 12:00AM 
Fajr 07:00 
Soloppgang 09:19 
etc... 

私が望む結果が全体の年間達成されないnextDayまたはthirdDayが来年のとき。

マイXML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <WIMPrayerTable> 
     <Prayertime 
      Day ="1" 
      Month="1" 
      Fajr="07:00" 
      Soloppgang="09:19" 
      Zohr="12:26" 
      Asr="13:36" 
      Maghrib="15:26" 
     /> 

     <Prayertime 
      Day ="2" 
      Month="1" 
      Fajr="07:00" 
      Soloppgang="09:19" 
      Zohr="12:25" 
      Asr="13:33" 
      Maghrib="15:23" 
      Isha="17:39" 
     /> 

//今年の残りの部分はここの間に入ります。私はここでそれを示すわけではない

私のクラス:

public class Bonn3 
{ 

    public string Fajr { get; set; } 
    public string Soloppgang { get; set; } 
    public string Zohr { get; set; } 
    public string Asr { get; set; } 
    public string Maghrib { get; set; } 
    public string Isha { get; set; } 
    public string Jumma { get; set; } 
    public DateTime Date { get; set; } 
    } 

私のクエリ:あなたは年間の変化を扱う追加する必要がありますデータで年なし

DateTime myDay = DateTime.Now; 
DateTime NextDay = myDay.AddDays(1); 
DateTime thirdDay = myDay.AddDays(2); 


var filteredData = from c in loadedCustomData.Descendants("Bønnetid") 
    where c.Attribute("Dag").Value == myDay.Day.ToString() && c.Attribute("Måned").Value == myDay.Month.ToString() 
|| c.Attribute("Dag").Value == NextDay.Day.ToString() && c.Attribute("Måned").Value == NextDay.Month.ToString() 
|| c.Attribute("Dag").Value == thirdDay.Day.ToString() && c.Attribute("Måned").Value == thirdDay.Month.ToString() 

select new Bonn3() 
{ 
Date = new DateTime(myDay.Year,int.Parse(c.Attribute("Måned").Value),int.Parse(c.Attribute("Dag").Value)), 

Fajr = c.Attribute("Fajr").Value, 
Soloppgang = c.Attribute("Soloppgang").Value, 
Zohr = c.Attribute("Zohr").Value, 
Asr = c.Attribute("Asr").Value, 
Maghrib = c.Attribute("Maghrib").Value, 
Isha = c.Attribute("Isha").Value, 

}; 

listBox1.ItemsSource = filteredData; 

答えて

0

あなたは何ができるかの真髄はこれです:

int year = DateTime.Now.Year; 
int lastMonth = 12; 
var bonn3s = new List<Bonn3>(); 
foreach (var d in filtererData) 
{ 
    int month = int.Parse(c.Attribute("Måned").Value); 
    if (lastMonth - month < 0) 
     year--; 

    bonn3s.Add(new Bonn3() 
    { 
     Date = new DateTime(year,month,int.Parse(c.Attribute("Dag").Value)), 

    .... 
    lastMonth = month; 
} 

編集

あなたはBonn3に、プロパティDateStringの(など)を与えることができる:

public string DateString 
{ 
    get { return this.Date.ToShortDateString(); } 
} 

と表示目的でバインドします。

+0

ありがとうございます。 Date = new DateTimeをshortDatestringとして表示するには?今すぐ "05/13/2012 12:00:00 AM"と表示されます – Megaoctane

+0

あなたはほとんど自分で答えを出しました:http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx –

+0

私は試しましたこれは動作しません。日付を取得するコードは次のとおりです。Date = new DateTime(myDay.Year、int.Parse(c.Attribute( "Month")。Value)、int.Parse(c.Attribute( "Day")。Value)) '.ToShortDateString()をどこに置くべきですか?終了時にすべてを赤色にします。 – Megaoctane

0

あなた自身。これはちょうどそれほど簡単ではあるが、今月のチェックとなるはずだ。

文字列に変換するときに日付を表​​示する方法を変更することができます。
参照:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

ではなくソートすることLINQ文を使用して、あなたはそれが簡単にCollectionViewSourceを使用することがあります。

+0

私は月にこの小切手を置くべきですか?コード例や、コードの設定方法を教えてください。 – Megaoctane

関連する問題