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

时间:2015-01-04 22:10:18

标签: c# loops

我已将一个月的日历日期缩短到选定日期。

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

                 monthCalender = Convert.ToInt32(takeDMCDay)

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

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

当用户在月份日历上选择一天时,它会使用当天发生的事件名称填充组合框。

我遇到的问题是在CreateEventList方法中。 如果值为true,它就能满足我的需求。 但如果我取消注释不等于方法,它会覆盖第一个

我如何解决这个问题,我可以猜测问题是foreach社区事件是问题,但我迷失了如何得到一个或另一个不是两个运行,我已经尝试过,如果,如果否则,尝试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);
            //}
         }
      }

1 个答案:

答案 0 :(得分:0)

如果我理解正确,如果所选月份没有事件,您需要列表中的-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());
        }
       }
     }