【发布时间】:2016-05-12 11:03:59
【问题描述】:
我有一个 CSV 文件,格式如下:
1,01/01/2001,a
2,19/09/2013,as
3,12/05/2016,asd
4,13/05/2016,asdf
5,12/12/2012,asdfg
6,05/02/2006,asdfgh
7,06/03/2011,asdfghj
我想按时间顺序对日期进行排序和显示,但我似乎无法让我的代码对其进行排序。但是,我的代码能够根据 CSV 文件中的格式显示日期。
如果CSV文件是这样的:
01/01/2001
19/09/2013
12/05/2016
13/05/2016
12/12/2012
05/02/2006
06/03/2011
然后,它就可以正常工作了。
以下是我的代码:
string parts = new StreamReader(@"C:\input.txt").ReadToEnd();
string[] file = parts.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < file.Length; i++)
{
string[] data = file[i].Split(new string[] { "," }, StringSplitOptions.None);
string[] dates = new string[] { data[1].ToString() };
//var date = dates.OrderBy(x => DateTime.Parse(x)).ToList();
var date = dates.OrderBy(x => DateTime.ParseExact(x, "dd/MM/yyyy", null));
foreach (string s in date)
{
sb.AppendLine(s + "<br />");
Label1.Text = sb.ToString();
}
}
我已经在 CSV 文件上同时使用 DateTime.Parse 和 DateTime.ParseExact 测试了这段代码,但它们不起作用。
我对 LINQ 查询非常陌生,这是我第一次使用它。如果对我的代码有什么问题提供解释,我将不胜感激。
【问题讨论】:
-
我想,你需要用逗号
split你的文件,然后按日期列排序。 -
发布预期标签文本与实际标签文本。你是什么意思它没有工作?用于排序的 linq 代码似乎没问题。
-
这里的问题是你正在对“每行”进行排序,而不是对所有行进行排序。