【发布时间】:2013-07-26 07:59:37
【问题描述】:
我有一个数据集 ds,我需要根据列对相同 ds 的数据表进行排序,列名是日期。此列的值采用“dd MMM yyyy”格式。
【问题讨论】:
-
不是问题,是请求。没有代码,没有努力只是规范。
-
列的类型是什么?
标签: c# .net sorting datatable dataset
我有一个数据集 ds,我需要根据列对相同 ds 的数据表进行排序,列名是日期。此列的值采用“dd MMM yyyy”格式。
【问题讨论】:
标签: c# .net sorting datatable dataset
如果您无法将列类型更改为日期,请尝试以下 Linq 解决方案
var recs = dataset.Tables[0].AsEnumerable()
.OrderBy(x =>DateTime.ParseExact(
x.Field<string>("Date"),
"dd MMM yyyy",
CultureInfo.InvariantCulture));
【讨论】:
MMM,而不是MM。 @Damith - 你写的是 ParaseExact 而不是 ParseExact。
这将是一个问题,特别是如果它是一张大桌子。当然,最好的答案是将列重新定义为日期类型。这样它将有效地排序和加入。但是,如果表格不大,您可以将日期字符串重新格式化为 ISO 格式 (YYYY-MM-DD),它会正确排序。您没有提及您使用的是哪个数据库,并且字符串和日期函数因平台而异:这是一个 SQL Server 示例:
SELECT CAST([Date] AS Date) AS real_date,
my_other_fields
FROM MyTable
我在家里,所以我现在没有 SQL Server 来测试它(如果它不起作用,我可以在早上更新示例),但该日期格式解析起来非常明确,所以我希望演员阵容能够正常工作。
如果您想完全在应用程序端处理这个问题,编写一个字符串函数将重新排序日期字符串中的年、月和日应该是相当简单的。
【讨论】: