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

时间:2013-07-26 06:51:21

标签: c# .net sorting datatable dataset

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

2 个答案:

答案 0 :(得分:0)

如果您无法将列类型更改为日期,请尝试使用Linq解决方案,如下所示

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

答案 1 :(得分:-1)

如果这是一张大桌子,那将会成为一个问题。当然,最好的答案是将列重新定义为日期类型。这样它将有效地排序和加入。但是,如果表格不大,您可以将日期字符串重新格式化为ISO格式(YYYY-MM-DD),并且它将正确排序。您没有提到您使用的数据库,字符串和日期函数因平台而异:这是一个SQL Server示例:

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

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

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