我正在尝试按写入日期获取目录中所有文件的列表:
private void Form1_Load(object sender, EventArgs e) {
DateTime LastCreatedDate =
Properties.Settings.Default["LastDateTime"].ToDateTime();
string [] filePaths = Directory.GetFiles(@"\Pontoscompleted", "*_*.csv")
.OrderBy(p => System.IO.File.GetLastWriteTime(p))
.Where(p>=LastCreatedDate);
}
问题
- 如何正确执行WHERE子句以仅获取大于或等于设置中日期的文件
string []
不适用于此,因为它不知道如何进行转换。我应该使用哪种数据类型
您不使用DirectoryInfo
而不是Directory
有什么原因吗?这将节省您必须将文件路径解析回Files
以获取日期,或者将日期存储在一个单独的变量中:
DateTime lastCreatedTime = new DateTime(2012, 01, 30, 05, 12, 00);
var files = new DirectoryInfo(@"\Pontoscompleted").GetFiles("*_*.csv")
.Where(f => f.LastWriteTime >= lastCreatedTime)
.OrderBy(f => f.LastWriteTime)
.Select(f => new {f.FullName});
foreach (var file in files) {
Console.WriteLine(file.FullName);
}
未测试但应工作:
private void Form1_Load(object sender, EventArgs e)
{
DateTime LastCreatedDate = Properties.Settings.Default["LastDateTime"].ToDateTime();
var filePaths = Directory.GetFiles(@"\Pontoscompleted", "*_*.csv").Select(p => new {Path = p, Date = System.IO.File.GetLastWriteTime(p)})
.OrderBy(x=>x.Date)
.Where(x=>x.Date>=LastCreatedDate);
}
您可以这样做:
Directory.GetFiles(@"\Pontoscompleted", "*_*.csv")
.Select(p => new { FileName = p, Modified = System.IO.File.GetLastWriteTime(p) })
.Where(p => p.Modified > LastCreatedDate)
.OrderBy(p => p.Modified);