c# - 在 C# 中对 DataTable/DataView 中的 DATE 列进行排序时出现问题

标签 c# datetime datatable dataview

我正在尝试在 C# 中对 DataView 进行排序。 DataView 类的 Sort 方法似乎将日期作为字符串。

在输出中得到这个 -

5/9/2013 4:56:38 PM
5/8/2013 4:23:06 PM
5/8/2013 1:38:21 PM
5/7/2013 9:55:30 PM
5/7/2013 7:54:45 PM
5/7/2013 7:44:10 PM
5/7/2013 7:44:10 PM
5/7/2013 12:26:38 PM
5/7/2013 1:44:06 PM
5/6/2013 4:08:54 PM
5/6/2013 10:32:49 AM
5/4/2013 7:54:23 PM
5/4/2013 12:57:21 PM
5/3/2013 3:49:03 PM
5/3/2013 3:49:03 PM
5/3/2013 2:06:12 PM
5/3/2013 11:19:34 AM
5/3/2013 11:03:32 AM
5/3/2013 1:58:38 PM
5/2/2013 7:27:55 PM
5/2/2013 7:17:50 PM
5/2/2013 7:06:06 PM
5/2/2013 6:42:37 PM
5/2/2013 6:30:58 PM
5/13/2013 12:49:24 PM

这是我的代码。

 DataTable dt;  
 DataView dv = dt.DefaultView;
 dv.Sort = "MessageDate desc";
 DataTable sortedDT = dv.ToTable();
 foreach (DataRow row in sortedDT.Rows)
 {
 code to print.
 }

如您所见,最后日期 5/13/2013 应该在第一个而不是底部,因为 5/13 > 5/9 如果它是一个日期比较,但是 5/13<5/9 如果你把它作为一个字符串。

MessageDate 列在我的声明中是日期时间,但编译器仍在将其转换为字符串。

 public struct Messages
    {
        public string ProfileId { get; set; }
        public string Network { get; set; }
        public string FromId { get; set; }
        public string FromName { get; set; }
        public string FromProfileUrl { get; set; }
        public DateTime MessageDate { get; set; }
        public string Message { get; set; }
        public string FbComment { get; set; }
        public string FbLike { get; set; }
        public string MessageId { get; set; }
        public string Type { get; set; }

    }

知道为什么会发生这种情况以及如何解决这个问题吗?

最佳答案

DataView 将日期或任何内容存储为字符串类型。因此,当您排序时,它按字符串排序。要将其排序为 DateTime ,您需要在添加任何数据之前将列转换为 DateTime ,如下所示,

dt.Columns["Date"].DataType = Type.GetType("System.DateTime");

关于c# - 在 C# 中对 DataTable/DataView 中的 DATE 列进行排序时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536935/

相关文章:

sql-server-2008 - 无法转换为日期时间的数据的查询列

python - TypeError : an integer is required (got type datetime. datetime) 尝试将字典中的日期时间对象转换为字符串时

javascript - Moment() 与预定义的 Moment() 日期

c# - 当没有列是动态的时将 DataTable 转换为列表

c# - 如何在 IEnumerable 的末尾添加更多查询

c# - 系统.InvalidOperationException : Unable to generate a temporary class (result=1)

java - 维护与服务器端服务的套接字连接是否不利于向桌面应用程序发送通知?

php - 数据表警告 : table id=DataTables_Table_0 - Ajax error

r - 在 Shiny 中输入更改时切换到不同的 DataTable 页面?

c# - 如果输入命令,如何在保留旧文本的同时添加新文本?