我有一个string[] files
,其中包含以下格式的几个文件名:
例如:
// my string[]
john_q1_1527421201.csv
john_q1_1527421202.csv
john_q1_1527421203.csv
注意:最新值是有效时间戳
如何快速使用LINQ查询时间戳最短的文件名?
public string GetOldestCsvFile(string[] files)
{
...
// implementation here
...
}
// 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
答案 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();