【问题标题】:c# how to order file lines based on creation datec# 如何根据创建日期对文件行进行排序
【发布时间】:2023-02-22 23:20:30
【问题描述】:

所以我有一个文本文件,我需要按日期和时间对其行进行排序,如所附屏幕截图列中所示,但我不确定如何

有什么想法吗?

Screenshot


myFile.Select(line => line).Split(" ").OrderBy();

【问题讨论】:

  • 您可能需要解析格式为YYYY MMM DD HH:mm:ss.fff 的日期。您可以粘贴源样本和预期结果(作为文本而不是图像)吗?

标签: c#


【解决方案1】:

搜索“C# 按日期排序文件”时的第一个 Google 搜索结果

也许这有帮助?

Sorting Files by date

【讨论】:

  • 你读过这个问题了吗? OP要下单文件内的行
【解决方案2】:

.OrderBy() LINQ 查询允许您执行类似 .OrderBy( GetDate(line)),在您自己的自定义 GetDate(string line) 方法中,您可以使用 .Split(" ") 提取日期的组成部分,然后将其作为 Date 类型返回?

我希望这可能会给您一些解决问题的想法?

【讨论】:

    【解决方案3】:

    你应该提炼日期,解析它然后按此订购日期. 我看不到你文件中的分隔符是什么。如果是列表' '

    using System.Globalization;
    using System.Linq;
    
    ...
    
    var sortedLines = myFile
      .OrderBy(line => DateTime.TryParseExact(
          line.Split('	', StringSplitOptions.RemoveEmptyEntries)[1],
         "yyyy MMM d H:m:s.fff",
          CultureInfo.InvariantCulture,
          DateTimeStyles.AssumeLocal, out var dt)
            ? dt
            : DateTime.MaxValue); // Incorrect dates will be in the end
    

    如果分隔符是双倍行距" " 然后

    var sortedLines = myFile
      .OrderBy(line => DateTime.TryParseExact(
          line.Split("  ", StringSplitOptions.RemoveEmptyEntries)[1],
         "yyyy MMM d H:m:s.fff",
          CultureInfo.InvariantCulture,
          DateTimeStyles.AssumeLocal, out var dt)
            ? dt
            : DateTime.MaxValue);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多