0

通过 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”的公共定义

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

4

2 回答 2

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它,但您仍然可以使用for

for(DateTime d = Diary_Entry.StartDate;d<=Diary_Entry.EndDate;d=d.AddDays(1))
{
   Calendar1.SelectedDates.Add(d);
}
于 2013-02-23T18:37:15.953 回答
1

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

来自msdn

foreach 语句为实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable<T> 接口的数组或对象集合中的每个元素重复一组嵌入语句。

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

foreach(DateTime date in DiaryEntry.Dates) 
{
    ...
}
于 2013-02-23T18:31:07.413 回答