从linq查询格式化日期时间到下拉列表的选择列表

时间:2010-08-13 15:48:13

标签: vb.net linq formatting

没有咖啡。脑。不。运作。

我在这里有这个linq查询:

Public Function ListAllVisitDates() As List(Of SelectListItem)
    Dim visitdates = db.SchoolVisitDates.Select(Function(t) New SelectListItem() With {.Text = t.VisitDate, .Value = t.VisitDateID}).ToList()
    Return visitdates
End Function

它返回了一个很长的日期MM dd yyyy hh:mm blah blah,我正在填充一个下拉框。我需要它是mm / dd / yyy的短日期。帮助

解决

这很容易愚蠢。抓取值并创建我的selectlistitem列表后,我只是将项目循环并格式化它们,然后将其传递到我的视图中:

Dim _VisitDates As New List(Of SelectListItem)
    Try
        _VisitDates = articlerepo.ListAllVisitDates()
        For Each item In _VisitDates
            item.Text = FormatDateTime(item.Text, DateFormat.ShortDate)
        Next
        ViewData("VisitDates") = _VisitDates
    Catch ex As Exception
        Debug.Print(ex.Message)
    End Try

3 个答案:

答案 0 :(得分:2)

Public Function ListAllVisitDates() As List(Of SelectListItem)
    Dim visitdates = db.SchoolVisitDates.Select(Function(t) New SelectListItem() With {.Text = t.VisitDate.ToString("d"), .Value = t.VisitDateID}).ToList()
    Return visitdates
End Function

在DateTime上调用ToString(“d”)将返回格式为d / M / yyyy的日期(与NickLarsen的答案一样)。

答案 1 :(得分:0)

如果是DateTime,您是否尝试使用.ToShortDateString()

答案 2 :(得分:0)

<强>解决

这很容易愚蠢。抓取值并创建我的selectlistitem列表后,我只是将项目循环并格式化它们,然后将其传递到我的视图中:

Dim _VisitDates As New List(Of SelectListItem)
Try
    _VisitDates = articlerepo.ListAllVisitDates()
    For Each item In _VisitDates
        item.Text = FormatDateTime(item.Text, DateFormat.ShortDate)
    Next
    ViewData("VisitDates") = _VisitDates
Catch ex As Exception
    Debug.Print(ex.Message)
End Try