Как отобразить часы работы? - PullRequest
3 голосов
/ 10 июля 2009

Я пытаюсь показать интервалы рабочих часов / дней, это должно выглядеть так:

Opening Times
(источник: clip2net.com )

У меня есть таблица, где я храню номер дня, время открытия и время закрытия для каждого дня

table
(источник: clip2net.com )

Тогда я создал запрос =>

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()
};

Этот запрос предоставляет все сгруппированные временные интервалы и дни, которые включены в этот временной диапазон. Но я столкнулся с проблемой - я создал вторую половину, представляющую эти группы, но она не работает должным образом. Может быть, кто-нибудь может объяснить мне необходимую точку зрения или эту основную логику показа времени открытия.

Спасибо за совет ...

1 Ответ

1 голос
/ 19 июля 2009

Следующий подход работает для меня:

экран результатов

  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]";
         }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...