Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#数据表排序日期说明_C# - Fatal编程技术网

C#数据表排序日期说明

C#数据表排序日期说明,c#,C#,我正在显示绑定到dt_pdc的数据网格中的项目列表。DueDate列显示支票的日期,如日、月和年。当我使用降序排序时,它会执行以下操作: 日期列表和订单: 1---4/18/2020 2---4/2/2020 3-4/22/2020 当一天的第一个数字小于另一天的第一个数字时,将首先对其排序,在示例中,4月18日在4月2日之前,而4月22日在4月2日之后 有什么我可以在排序视图中修复的,或者我必须将其作为02而不是2写入DB中 dt_pdc.Columns.Add("ID"); dt_pdc.C

我正在显示绑定到dt_pdc的数据网格中的项目列表。DueDate列显示支票的日期,如日、月和年。当我使用降序排序时,它会执行以下操作: 日期列表和订单: 1---4/18/2020 2---4/2/2020 3-4/22/2020

当一天的第一个数字小于另一天的第一个数字时,将首先对其排序,在示例中,4月18日在4月2日之前,而4月22日在4月2日之后

有什么我可以在排序视图中修复的,或者我必须将其作为02而不是2写入DB中

dt_pdc.Columns.Add("ID");
dt_pdc.Columns.Add("ChequeNumber");
dt_pdc.Columns.Add("DueDate");
dt_pdc.Columns.Add("Amount");


dt_pdc.Merge(Database.Accounts.Cheques.getPDCChequesSearch(dt_pdc));
dt_pdc.DefaultView.Sort = "DueDate ASC";
或者我必须将其作为02写入数据库


不,这只是加剧了错误(如果你不相信我,等到新年那天接到紧急支持电话);基本上:停止将日期存储为字符串;将它们存储为日期-即
DateTime
;然后一切都会正常工作。如果你绝对必须使用<代码>字符串出于某种原因(并且它需要是一个很好的理由),考虑使用ISO8601格式,即将其存储为<代码>“2020—04-02”< /代码>;然后,它可以自然地作为字符串进行排序,而且它是明确的(毫无疑问,这是4月2日还是2月4日)。

我猜它是在进行字符串排序,因为您没有为列指定类型。尝试类似dt_pdc.Columns.Add(“DueDate”,typeof(DateTime))的方法,它在数据库中存储为DateTime,但是从代码中我从未设置datatable列的类型。现在我在添加DueDate列时添加了typeof(DateTime),它只使用Sort(不带“DESC”)就可以正常工作。上面所做的是显示我不想要的时间,所以我不得不删除它。我只是在从数据库获取日期时将日期更改为上面提到的格式。第[“DueDate”]=x.DueDate.ToSortDateString()行中的第[“DueDate”]=x.DueDate.ToString(“yyyy-M-dd”)行。