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



通过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_Intry"不包含"GetEnumerator"的公共定义

有人知道我该怎么解决这个问题吗?感谢

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

您的DiaryEntry对象需要实现IEnumerable或IEnumerable<T>。

来自msdn:

foreach语句为每个重复一组嵌入语句数组中的元素或实现System.Collections.Enumerable或System.Collections.Generic.IEnumerable<T>界面

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

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

相关内容

  • 没有找到相关文章

最新更新