C# 使用c按创建日期筛选文件#

C# 使用c按创建日期筛选文件#,c#,C#,通过下面的代码,我可以合并目录中存在的文本文件 var allLines = Directory.GetFiles(directory, "*.txt") .SelectMany(f => File.ReadLines(f)); File.WriteAllLines(outputFileName, allLines); 如何修改它以合并今天创建的文件 DirectoryInfo info = new DirectoryInfo("");

通过下面的代码,我可以合并目录中存在的文本文件

 var allLines = Directory.GetFiles(directory, "*.txt")
                        .SelectMany(f => File.ReadLines(f));
File.WriteAllLines(outputFileName, allLines);
如何修改它以合并今天创建的文件

DirectoryInfo info = new DirectoryInfo("");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
如何组合这段代码?

试试以下方法:

var allLines = Directory.GetFiles(directory, "*.txt")
    .Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date)
    .SelectMany(f => File.ReadLines(f));

使用File.GetCreationTime方法:

var allLines = Directory.EnumerateFiles(directory, "*.txt", SearchOption.TopDirectoryOnly)
                        .Where(path => File.GetCreationTime(path).Date == DateTime.Today)
                        .SelectMany(f => File.ReadLines(f));

DateTime.Now的意思就是现在,不是“今天”@SriramSakthivel,你是对的,但它是
p.CreationTime==DateTime.Now
before@Andrew我应该说你的两个代码都不会编译,因为
Directory.GetFiles
返回
string[]
而不是
Fileinfo[]
。而且也没有理由使用
DateTime.Now.Date
这就是为什么我们有
DateTime.Today
属性。@SriramSakthivel,感谢DateTime。今天,不知何故我已经7年不知道它了:)
EnumerateFiles
GetFiles
更好用是的,对,它开始枚举得更快,不等待检索所有文件,因为它是IEnumerable。错过了那个,只是跟着问题。
DirectoryInfo info = new DirectoryInfo(directory);

var allLines = info.GetFiles("*.txt")
                   .Where(p => p.CreationTime.Date == DateTime.Today)
                   .OrderBy(p => p.CreationTime)
                   .SelectMany(p => File.ReadAllLines(p.FullName));

File.WriteAllLines(outputFileName, allLines);