如何查询字符串[]中具有最低时间戳的项目

时间:2018-05-27 12:17:54

标签: c# linq

我有一个string[] files,其中包含以下格式的几个文件名:

例如:

// my string[]
john_q1_1527421201.csv
john_q1_1527421202.csv
john_q1_1527421203.csv

注意:最新值是有效时间戳

如何快速使用LINQ查询时间戳最短的文件名?

public string GetOldestCsvFile(string[] files)
{
     ...
     // implementation here
     ...
}

编辑1

// my string[]
john_q1_1527421034.csv
john_q1_1527421035.csv
john_q1_1527421034.csv

public void GetOldestCsvFile(string[] files)
{
    var timestamp = files.Select(x => Convert.ToInt32(x.Replace("john_q1_", string.Empty).Replace(".csv", string.Empty))).OrderBy(x => x).FirstOrDefault();
    Console.WriteLine(timestamp); // <-- it never reaches this line
}

我希望它能够以最早的日期返回最低时间戳。那就是john_q1_1527421034.csv

1 个答案:

答案 0 :(得分:2)

您可以使用OrderBy,因为文件共享相同的名称,唯一不同的部分是时间戳。

var lowestTimeStamp = files.OrderBy(x => x).FirstOrDefault();

如果没有字母数字排序,我们可以替换不必要的字段并解析为整数。

  var timestamp = files.Select(x => Convert.ToInt32(x.Replace("john_q1_", string.Empty).Replace(".csv", string.Empty))).OrderBy(x => x).FirstOrDefault();