2009-07-10 10 views
3

私はそれがだ労働時間/日の間隔を表示しようとしているが、次のようになります。オープニング時間の表示方法は?

Opening Times http://clip2net.com/clip/m12007/1247254068-clip-64kb.png

を私は一日数、開いている時間を記憶し、毎日のための時間を閉じてるのテーブルを持っています

table http://clip2net.com/clip/m12007/1247253580-clip-4kb.png

それから私は、クエリ=>

var groups = from s in this.OpenTimes 
orderby s.Day 
group s by new { s.Till, s.Start } into gr 
select new 
{ 
    Time = gr.Key.Start + "-" + gr.Key.Till, 
    Days = this.OpenTimes 
     .Where(o => o.Start == gr.Key.Start && o.Till == gr.Key.Till) 
     .OrderBy(d => d.Day).Select(d => d.Day).ToArray() 
}; 
を作成3210

このクエリは、この時間範囲に含まれるすべてのグループ化された時間間隔と日数を提供します。 しかし、私は問題に直面しました - このグループを表す後半を作成しましたが、 誰かが私に、視点やオープニング時代を示すこの基本的な論理を必要とするかもしれないと説明することができたかもしれません。

アドバイスのおかげで...

+0

私はよく分からない "私はthsiグループを表すことを後半を作成し、" 意味。表示されていないコードが期待通りに機能していないと言っていますか?これはUIの質問ですか? – NotMe

+0

私は動作していないはいコードと=>私はこのコードを表示していません。これは、ロジックの要素を持つUIの質問です – omoto

+0

いいえ、助けを必要としませんでした – omoto

答えて

1

次のアプローチは、私の作品:

result screen

public string OpeningTimesString 
     { 
     get 
     { 
      if (!this.OpeningTimes.IsLoaded) 
       this.OpeningTimes.Load(); 
      var groups = (from s in this.OpeningTimes 
         orderby s.Day, s.Start, s.Stop 
         group s by new { Stop = formatTime(s.Stop), Start = formatTime(s.Start), s.Day } into gr 
         select new 
         { 
          Time = gr.Key.Start + "-" + gr.Key.Stop, 
          Day = gr.Key.Day 
         }).ToList(); 
      string result = ""; 
      int tmp = 1; 
      for (int i = 0; i < groups.Count(); i++) 
      { 


       //One one = new One(); 
       bool exit = false; 
       tmp = i; 
       while (exit == false) 
       { 
        if (i + 1 < groups.Count && groups[i].Time.Equals(groups[i + 1].Time)) 
        { 
        i++; 
        } 
        else 
        { 
        if (tmp != i) 
         result += (NormalDayOfWeek)(groups[tmp].Day - 1) + "-" + (NormalDayOfWeek)(groups[i].Day - 1) + " : " + groups[i].Time + "<br />"; 
        else 
         result += (NormalDayOfWeek)(groups[i].Day - 1) + " : " + groups[i].Time + "<br />"; 
        exit = true; 
        } 
       } 
      } 

      if (result.IsNotNull()) 
       return result; 
      else 
       return "[%Not yet defined]"; 
     } 
     } 
関連する問題