【发布时间】:2023-02-22 23:20:30
【问题描述】:
所以我有一个文本文件,我需要按日期和时间对其行进行排序,如所附屏幕截图列中所示,但我不确定如何
有什么想法吗?
myFile.Select(line => line).Split(" ").OrderBy();
【问题讨论】:
-
您可能需要解析格式为
YYYY MMM DD HH:mm:ss.fff的日期。您可以粘贴源样本和预期结果(作为文本而不是图像)吗?
标签: c#
所以我有一个文本文件,我需要按日期和时间对其行进行排序,如所附屏幕截图列中所示,但我不确定如何
有什么想法吗?
myFile.Select(line => line).Split(" ").OrderBy();
【问题讨论】:
YYYY MMM DD HH:mm:ss.fff 的日期。您可以粘贴源样本和预期结果(作为文本而不是图像)吗?
标签: c#
【讨论】:
.OrderBy() LINQ 查询允许您执行类似 .OrderBy( GetDate(line)),在您自己的自定义 GetDate(string line) 方法中,您可以使用 .Split(" ") 提取日期的组成部分,然后将其作为 Date 类型返回?
我希望这可能会给您一些解决问题的想法?
【讨论】:
你应该提炼日期,解析它然后按此订购日期.
我看不到你文件中的分隔符是什么。如果是列表' ':
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);
【讨论】: