0

foreachループを介して日付のリスト「DiaryEntry」を渡します。記録するすべての日付がカレンダーで強調表示されます。

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

エラー:「Diary_Entry」に「GetEnumerator」のパブリック定義が含まれていないため、foreachステートメントは「Diary_Entry」タイプの変数を操作できません

誰かが私がこれをどのように解決できるか考えていますか?ありがとう

4

2 に答える 2

1

DiaryEntryオブジェクトは、IEnumerableまたはIEnumerable<T>を実装する必要があります。

msdnから:

foreachステートメントは、System.Collections.IEnumerableまたはSystem.Collections.Generic.IEnumerable<T>インターフェイスを実装する配列またはオブジェクトコレクションの各要素に対して埋め込みステートメントのグループを繰り返します。

配列またはそれらのオブジェクトの他のコレクションがあることを意味しているのではないかと思います。その場合、foreachを使用してコレクションを反復処理できます。もう1つの可能性は、DiaryEntryにコレクションプロパティがあり、それを反復処理することを意味します...次のようになりますか?

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

Diary_Entryある種のリストになることを意味しますか?それはコレクションクラスに基づいていますか、それを実装するものですSystem.Collections.IEnumerableSystem.Collections.Generic.IEnumerable?そうでない場合は、日付を表すプロパティが2つしかない場合は、foreach一緒に使用できません。各プロパティを個別に処理する必要があります。

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

開始日と終了日を表す2つの日付があり、範囲を反復処理する場合、それを使用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 に答える