根据日期列(dd-MMM-yyyy)对数据表进行排序

本文关键字:数据表 排序 dd-MMM-yyyy 日期 | 更新日期: 2023-09-27 18:25:04

我有一个数据集ds,我需要根据列对相同ds的数据表进行排序,列名为Date。此列上的值采用"dd MMM yyyy"格式。

根据日期列(dd-MMM-yyyy)对数据表进行排序

如果不能将列类型更改为Date,请尝试以下中的Linq解决方案

var recs = dataset.Tables[0].AsEnumerable()
    .OrderBy(x =>DateTime.ParseExact(
             x.Field<string>("Date"),
                           "dd MMM yyyy", 
                           CultureInfo.InvariantCulture));

这将是一个问题,尤其是当它是一个大表时。当然,最好的答案是将列重新定义为日期类型。这样它就能高效地进行排序和连接。但是,如果表不是很大,您可以将日期字符串重新格式化为ISO格式(YYYY-MM-DD),它将正确排序。您没有提到您使用的是哪个数据库,字符串和日期函数因平台而异:以下是SQL Server示例:

 SELECT CAST([Date] AS Date) AS real_date,
        my_other_fields
   FROM MyTable

我在家,所以我现在没有SQL Server来测试它(如果它不起作用,我可以在早上更新示例),但日期格式解析起来非常明确,所以我希望转换会正常工作。

如果你想完全在应用程序端处理这个问题,那么写一个字符串函数应该很简单,它会重新排序日期字符串中的年、月和日。