foreach语句不能对'Diary_Entry'类型的变量进行操作

时间:2013-02-23 18:25:20

标签: asp.net datetime

通过foreach循环传入日​​期列表'DiaryEntry'。它记录的每个日期都会在日历上突出显示....

foreach (DateTime d in DiaryEntry)
            {
                Calendar1.SelectedDates.Add(d);//CALENDAR1 being the ID of the calendar on the aspx page
            }

错误:foreach语句无法对“Diary_Entry”类型的变量进行操作,因为“Diary_Entry”不包含“GetEnumerator”的公共定义

任何人都知道如何解决这个问题? 感谢

2 个答案:

答案 0 :(得分:1)

您的DiaryEntry对象需要实现IEnumerableIEnumerable<T>

来自msdn

  

foreach语句为每个语句重复一组嵌入式语句   数组中的元素或实现的数组   System.Collections.IEnumerable或   System.Collections.Generic.IEnumerable&LT; T&GT;接口

我怀疑你的意思是拥有这些对象的数组或其他集合。在这种情况下,您可以使用foreach迭代集合。另一种可能性是DiaryEntry上有一个集合属性,你的意思是迭代它......就像下面的那样?

foreach(DateTime date in DiaryEntry.Dates) 
{
    ...
}

答案 1 :(得分:1)

Diary_Entry是否属于某种列表?它是基于集合类,是实现System.Collections.IEnumerable还是System.Collections.Generic.IEnumerable的东西?如果没有,如果它只有几个表示日期的属性,则不能使用foreach。您必须单独处理每个属性。

Calendar1.SelectedDates.Add(Diary_Entry.Date1);
Calendar1.SelectedDates.Add(Diary_Entry.Date2);
// etc.

如果它有两个日期,表示开始日期和结束日期,并且您希望迭代该范围,则无法使用foreach,但您仍然可以使用{{1} }:

for