2

Linq to SQL を使用してデータを取得しているため、レコードがデータベースに追加された日付に基づいて、レコードが存在するカレンダー コントロールでその日を強調表示できます。

データベース (datestamp) に日付データ型のフィールドがあります。

以下のように、これを達成するために IEnumerable を宣言しています。

Private unapprovedFireDays As IEnumerable(Of DateTime) = Nothing

データを取得するための page_prerender イベントの私のコードを以下に示します。

If calFire.VisibleDate.Year <> 1 Then
        baseDate = calFire.VisibleDate
    Else
        baseDate = DateTime.Now
    End If

    startDate = New DateTime(baseDate.Year, baseDate.Month, 1)
    endDate = startDate.AddMonths(1).AddDays(-1)


    Dim fdc As New FireAlarmDataContext()


    unapprovedFireDays = (From f In fdc.FireAlarms _
                          Where f.DateStamp <= endDate And _
                          f.DateStamp >= startDate And _
                          f.SupervisorChecked = "0" _
                          Order By f.DateStamp _
                          Select New DateTime(f.DateStamp.year, _
                                              f.DateStamp.month, _
                                              f.DateStamp.day) Distinct).ToArray()

何らかの理由で、コードの f.datestamp.year、f.datestamp.month、および f.datestamp.day 項目の下に青い線が表示されます。これにカーソルを合わせると、「年」は「日付のメンバーではありませんか?」と表示されます。

私は、データ型日付のdatestampと呼ばれるそのテーブルのフィールドを使用して、別のテーブルで動作する実質的に同一のコードを持っており、それは正常に動作します。

year が Date のメンバーである必要があると考える理由がわかりません。日付ではありません。明らかな何かを見逃しましたか?

4

1 に答える 1

3

問題は非常に単純だと思います。

「年」は「日付?」のメンバーではありません。(null 許容型)、'Date' のメンバーです。

「f.DateStamp.year」の代わりに「f.DateStamp.Value.Year」を入れると問題が解決するのでしょうか?

于 2013-07-18T11:41:51.390 に答える