根据字符串选择文件

时间:2019-02-08 10:43:53

标签: c# file

我的文件如下:

Test_221218_123.txt

Test_221218_456.txt

Test_221218_789.txt

此处为“ 221218”。我做了如下测试:

<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>

为了测试,我通过的日期是静态的,仅用于测试目的,但是在投入生产时它将是一个变量。上面为我选择了所有文件。我需要选择最新文件(按日期)。

我尝试如下

var d = new DirectoryInfo(@"C:\");
var files = d.GetFiles().Where(f => f.Name.Contains("221218"));

第一个是我的所有var files = d.GetFiles().Where(f => f.Name.Contains("221218")); //OR var files = d.GetFiles().Where(f => f.Name.Contains("221218")).Select(f => f.LastWriteTime); 文件列表。第二个给我日期。如何选择最新文件?

3 个答案:

答案 0 :(得分:2)

FileInfo latestByWriteTime = new DirectoryInfo( @"C:\" )
    .GetFiles()
    .Where( f => f.Name.Contains( "221218", StringComparer.OrdinalIgnoreCase ) )
    .OrderByDescending( f => f.LastWriteTime )
    .FirstOrDefault();

答案 1 :(得分:0)

您可以在OrderByDescending属性上使用LastWriteTime,然后在列表中选择第一个。这将如下所示:

var file = d.GetFiles().Where(f => f.Name.Contains("221218")).OrderByDescending(f => f.LastWriteTime).FirstOrDefault();

或者,您可以考虑使用DateTime.ToFileTime()方法命名文件,然后可以选择时间戳最大的最新文件。

答案 2 :(得分:0)

检查此内容:

var d = new DirectoryInfo(@"C:\");
var files = d.GetFiles()
   .Where(f => f.Name.Contains("221218"))
   .OrderByDescending(f => f.LastWriteTime)
   .FirstOrDefault();

还有日期

DateTime.Now.ToString("ddMMyy")

最终查询

var d = new DirectoryInfo(@"C:\");
var files = d.GetFiles()
   .Where(f => f.Name.Contains(DateTime.Now.ToString("ddMMyy")))
   .OrderByDescending(f => f.LastWriteTime)
   .FirstOrDefault();