c# - LINQ 无法在特定列中按日期排序?

标签 c# asp.net .net linq

我有一个如下所示的 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.ParseDateTime.ParseExact 测试了这段代码,但它们没有用。

我是 LINQ 查询的新手,这是我第一次使用它。如果对我的代码有什么问题提供解释,我将不胜感激。

最佳答案

您正在对始终包含一个日期的数组 (dates) 进行排序(因为您每次都从循环中的一行创建它)。然后将此行添加到标签的文本中。

在排序之前,您必须创建一个包含所有日期的集合。

string parts = new StringReader(@"C:\input.txt").ReadToEnd();
string[] lines = parts.Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
StringBuilder sb = new StringBuilder();
List<string> dates = new List<string>();
for (int i = 0; i < lines.Length; i++)
{
    string[] data = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
    dates.Add(data[1]);
}

var datesSorted = dates.OrderBy(x => DateTime.ParseExact(x, "dd/MM/yyyy", null));
foreach (string s in datesSorted)
{
    sb.AppendLine(s + "<br />");
}

Label1.Text = sb.ToString();

关于c# - LINQ 无法在特定列中按日期排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37185038/

相关文章:

c# - 执行多个查询时如何保持连接打开?

c# - 如何在不使用 Bitmap.MakeTransparent() 的情况下在 C# 中将图像设置为具有透明背景?

c# - 找到的程序集的 list 定义与程序集引用不匹配

c# - ASP.NET Core 6 应用无法找到 UseWindowsService

c# - 如何调试 PayPalCoreSDK IPN 验证失败?

c# - 正确使用 return Task.FromException

c# - 在 C# 中获取服务器的时区偏移量

c# - TreeView不显示对象层次结构

c# - 从十进制转换时,字符串包含尾随零

asp.net - 我应该将工作卸载到 ASP.NET 中的其他线程吗?