【问题标题】:ASP.Net - Issue with DateTime in Linq - VBASP.Net - Linq 中的 DateTime 问题 - VB
【发布时间】:2013-07-18 19:41:51
【问题描述】:

我正在使用 Linq to SQL 获取一些数据,因此我可以根据记录添加到数据库的日期突出显示日历控件上存在记录的日期。

我的数据库中有一个数据类型为日期的字段(日期戳)。

我声明一个 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.datesamp.year、f.datesamp.month 和 f.datesamp.day 项下出现了蓝线。如果我将鼠标悬停在它上面,它会说“年份”不是“日期”的成员?

我有几乎相同的代码与另一个表一起使用该表中的一个名为 datestamp 的数据类型为 date 的字段,并且工作正常。

我不确定为什么它认为 year 应该是 Date 的成员?而不是日期。我错过了什么明显的东西吗?

【问题讨论】:

    标签: asp.net vb.net linq-to-sql


    【解决方案1】:

    我怀疑问题很简单。

    “年份”不是“日期”的成员? (可以为空的类型),它是 'Date' 的成员。

    我想知道用 'f.DateStamp.Value.Year' 代替 'f.DateStamp.year' 是否可以解决问题?

    【讨论】:

    • 感谢辩论者这有效。很奇怪,因为 x.datesamp.year 与我在同一个子中使用的另一个 ienumerable 可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2012-03-30
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多