0

嗨,提前感谢:

因此,我试图从 SQL 数据库中提取一个表,并在“Date From”(DtFr)列中对其进行排序,该列表示租约的开始。我认为它会像这样简单:

Dim XmlReader As New XmlNodeReader(xmlDoc)
Dim ds As New DataSet
ds.ReadXml(XmlReader)
myDt = ds.Tables("Cam")
If myDt IsNot Nothing AndAlso myDt.Rows.Count > 0 Then
    Dim dv As New DataView(myDt)
    dv.Sort = "DtFr ASC"
    myDt = dv.ToTable(False, "Id", "Name", "Amount", "Unpaid", "DtFr")
End If

但正如您可能已经猜到的那样,这是行不通的(新用户,无法发布图片,这只是日期乱序的图片)。

在此处输入图像描述

可能是因为在数据检索的某个时刻,它不再是 Date 类型,而是一个字符串或其他什么?如果我使用更简单的日期,例如 2012 年 1 月 1 日、2012 年 1 月 2 日、2012 年 1 月 3 日或 2012 年 1 月 1 日、2012 年 2 月 1 日、2012 年 3 月 1 日等。你会在上面注意到,如果我有不同的月份,它会乱序排列。

我试过搞乱文化,认为可能是在前几个月对它们进行分类无济于事......我不知所措,任何帮助,想法或对有用的东西的指导都会很棒。

非常感谢,乔希

编辑:你是个天才,非常感谢。您对字符串值是正确的。我在数据表中添加了一个名为 sortDtFr 的数据列,并将 System.DateTime 作为数据类型赋予它,并遍历将新列的值设置为与转换为日期的旧值相等的行。以下是感兴趣的人的代码:

ds.ReadXml(XmlReader)

myDt = ds.Tables("Cam")
myDt.Columns.Add(New DataColumn("sortDtFr", System.Type.GetType("System.DateTime")))
For Each row As DataRow In myDt.Rows
    row("sortDtFr") = CDate(row("DtFr"))
Next
If myDt IsNot Nothing AndAlso myDt.Rows.Count > 0 Then
    Dim dv As New DataView(myDt)
    dv.Sort = "sortDtFr ASC"
    myDt = dv.ToTable(False, "Id", "Name", "Amount", "Unpaid", "DtFr", "sortDtFr")
End If
4

1 回答 1

2

您的记录以这种方式排序的原因是因为您的(Cam)的数据类型System.String默认情况下)。尝试将其更改为System.DateTimeDataColumnDataTable

于 2012-06-01T01:17:29.973 回答