我想到的可能的解决方案是这样的:
var dateFiles = Directory.GetFiles(filesPath)
.Where(x => new FileInfo(x).CreationTime.Date >= startDate &&
new FileInfo(x).CreationTime.Date <= endDate);
我是=>
语法的新手,我不确定如何将new FileInfo(x).CreationTime.Date
放入变量中,因此不必初始化两次。另外,请告诉我是否还有更好的解决方案。非常感谢。
答案 0 :(得分:2)
您可以使用DirectoryInfo
代替Directory
,这将返回FileInfo
的数组(与从Directory.GetFiles
方法获得的字符串数组相比):< / p>
var directoryInfo = new DirectoryInfo(filesPath);
var dateFiles = directoryInfo.EnumerateFiles()
.Where(x => x.CreationTime.Date >= startDate && x.CreationTime.Date <= endDate)
.Select(f => f.Name);
答案 1 :(得分:1)
让我们添加Select
,将fileName
转换为匿名类型实例,在其中可以存储 name
和{ {1}}:
date
请注意var dateFiles = Directory
.EnumerateFiles(filesPath)
.Select(fileName => new { // given fileName
name = fileName, // store name
date = new FileInfo(fileName).CreationTime.Date // ... and date
})
.Where(file => file.date >= startDate && // filter by date
file.date <= endDate)
.Select(file => file.name); // finally, we want name only
:我们不想等待所有的文件都被收集到,但可以处理一个接一个的文件。
答案 2 :(得分:0)
您还可以将config = tf.ConfigProto()
config.intra_op_parallelism_threads = 2
tf.Session(config=config)
中的lambda表达式变成语句主体:
Where
答案 3 :(得分:0)
我会做一些紧凑的事情:
DateTime start = new DateTime(2010, 1, 1);
DateTime end = new DateTime(2017, 1, 1);
string[] files = Directory.GetFiles(@"C:\", "*")
.Where(
f => new FileInfo(f).CreationTime.Date >= start &&
new FileInfo(f).CreationTime.Date <= end
).ToArray();