我有一个C#程序,它将CSV文件中的数据读入DataTable。这意味着结果DataTable中的所有列都是字符串。然后,我需要从DataTable中选择与单个列中的共享值的条件匹配的行的子集。这很好。
我的问题在于我还需要按另一列排序的返回集,这是一个日期。我无法弄清楚如何在Select函数中格式化该排序参数,以将日期的字符串表达式转换为实际日期,以便排序正常工作。
可以使用Select语句完成,还是需要采用其他方法?
答案 0 :(得分:0)
您可以使用schema.ini https://msdn.microsoft.com/en-us/library/ms709353.aspx加载文件并为列定义类型
答案 1 :(得分:0)
这是你可以尝试的一件事。这将迭代DataTable中的每一行,并从您指定的列中获取日期的String。它将使用TryParse将String转换为DateTime。如果成功,Row [0]将设置为DateTime。如果失败,则不会更改行[0]。
我在下面的代码中将列设置为0,但您应该将所有0更改为DateTime所在的任何列。
DateTime dateValue;
foreach(DataRow row in dtDataTable.Rows){
if(DateTime.TryParse(row[0], out dateValue)){
row[0] = dateValue
}
}
您可以在TryParse here上找到更多信息。 TryParse可能会产生不可预测的行为,因此为了获得更多控制,我建议您在完成此操作后升级到TryParseExact。