如何从 Foreach 循环中获取两个单独的结果

本文关键字:两个 单独 结果 Foreach 循环 获取 | 更新日期: 2023-09-27 18:36:05

>我已将月份日历日期缩短为所选日期值。

 string dMC = dateMonthCalender.SelectionRange.Start.ToShortDateString();
                 string takeDMCDay = dMC.Substring(0, 2);
                 monthCalender = Convert.ToInt32(takeDMCDay)

我有一个列表,它将从文本文件中读取的字段存储在类社区事件对象列表(日期,时间,名称,描述等)中

其中一个字段称为 e.Day(即一个月中的某一天)

当用户在月份日历上选择某一天时,它会用当天到期的事件 e.Name 填充组合框。

我遇到的问题出在创建事件列表方法中。如果值为真,它就会做我想要的。但是如果我取消注释不等于方法,它将覆盖第一个

请问我该如何解决这个问题,我可以猜到问题是foreach社区事件是问题所在,但是我迷失在如何让一个或另一个而不是两个都运行中,我已经尝试过其他,如果,如果,如果,尝试了循环等等,但我在这里。?

private void CreateEventList()
      {
         events = ExtractData();
         eventComboBox.Items.Clear();
         string eventTrue = ("-Events-");
         string descriptTrue = ("Pick an event");
         string eventFalse = ("-No Event-");
         string descriptFalse = ("-No events today-");
         foreach (communityEvent e in events)
         {
            if (monthCalender == e.Day)
            {
               eventComboBox.Items.Insert(0, eventTrue);
               eventComboBox.Items.Add(e.GetName());
            }
          //else if (monthCalender != e.Day)
            //{
            //   eventComboBox.Items.RemoveAt(0);
            //   eventComboBox.Items.Insert(0, eventFalse);
            //}
         }
      }

如何从 Foreach 循环中获取两个单独的结果

如果我

理解正确,如果所选月份没有事件,您希望列表中-No Event-。否则,您需要匹配项列表。

那将是接近

  private void CreateEventList()
  {
     events = ExtractData();
     eventComboBox.Items.Clear();
     string eventTrue = ("-Events-");
     string descriptTrue = ("Pick an event");
     string eventFalse = ("-No Event-");
     string descriptFalse = ("-No events today-");
     if ( !events.Any( e => e.Day == monthCalender ) )
     {
       // no occurrences
       eventComboBox.Items.Insert(0, eventFalse);
     } 
     else
     {
       // there are some occurrences
       eventComboBox.Items.Add(eventTrue);
       foreach (communityEvent e in events)
       {
        if (monthCalender == e.Day)
        {
           eventComboBox.Items.Add(e.GetName());
        }
       }
     }