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

How to get two separate results from a Foreach loop

我已将 monthCalender 日期缩短为所选日期值。

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

                 monthCalender = Convert.ToInt32(takeDMCDay)

我有一个列表,它存储从 class communityevents 对象(日期、时间、名称、描述等)列表中的文本文件读取的字段

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

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

我遇到的问题出在 CreateEventList 方法中。 如果该值为 true,它将执行我想要的操作。 但如果我取消注释不等于方法,它会覆盖第一个

请问我该如何解决这个问题,我猜问题出在 foreach communityEvent 上,但我不知道如何让一个或另一个运行,但我已经尝试过其他方法,如果,否则,请尝试 while 循环等等,但我在这里。?

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

如果我没理解错的话,如果所选月份没有活动,您需要列表中的 -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());
        }
       }
     }