【问题标题】:How to display opening times?如何显示营业时间?
【发布时间】:2009-07-10 19:36:12
【问题描述】:

我正在尝试显示工作时间/天数的间隔,它应该如下所示:


(来源:clip2net.com

我有一个表格,我在其中存储天数、开放时间和关闭时间每天


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

此查询提供包含在此时间范围内的所有分组时间间隔和天数 但我遇到了问题——我创建了代表这些群体的后半部分,但它不能正常工作。 也许有人可以向我解释需要的观点或显示开放时间的基本逻辑。

感谢您的建议...

【问题讨论】:

  • 我不确定“我创建了代表 thsi 组的后半部分”是什么意思。你是说你没有显示的代码没有像你期望的那样工作吗?这是一个 UI 问题吗?
  • 是的,我制作的代码不起作用=>,我没有显示此代码。这是带有逻辑元素的 UI 问题
  • 我很好奇保存开放时间的用户界面是什么。使用所有文本框、下拉列表、网格或网格/文本框/下拉列表的组合?

标签: c# sql-server linq logic


【解决方案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]";
         }
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2019-06-02
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多