2009-07-10 9 views
3

Je suis en train de montrer des intervalles d'heures de travail/jours, il est devrait ressembler à ceci:Comment afficher les heures d'ouverture?

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

Je table où je suis stocker nombre de jours, le temps ouvert et la fermeture pour chaque jour

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

Je crée query =>

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

Cette requête fournit tous les intervalles de temps groupés et les jours compris dans cette plage de temps Mais j'ai fait face à un problème - J'ai créé la seconde moitié de ce groupe, mais cela ne fonctionne pas correctement. Peut-être que quelqu'un pourrait m'expliquer le point de vue nécessaire ou cette logique de base de montrer les heures d'ouverture.

Merci à des conseils ...

+0

Je ne suis pas sûr de ce que "j'ai créé la deuxième moitié que représentant thsi groupes," des moyens. Êtes-vous en train de dire que le code que vous n'avez pas montré ne fonctionne pas comme vous le souhaitez? Est-ce une question d'assurance-chômage? – NotMe

+0

Oui code que j'ai fait ne fonctionne pas => et je ne montre pas ce code. Ceci est une question de l'interface utilisateur avec des éléments de la logique – omoto

+0

Terminé merci pas besoin d'aide – omoto

Répondre

1

approche suivante fonctionne pour moi:

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]"; 
     } 
     } 
Questions connexes