[英].Where(Date.AddHours) filter doesn't seem to work
我正在整理从昨天下午1:00到现在的文件列表。 我正在尝试使用以下代码:消息框显示了我正在尝试引用的正确时间,但是过滤器似乎无法正常工作。 如果我删除“ AddHours(13)”,它将正确过滤。
MessageBox.Show(DateTime.Now.Date.AddDays(-1).AddHours(13).ToString());
string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls")
.Where(file => new FileInfo(file).CreationTime.Date >= (DateTime.Now.Date.AddDays(-1).AddHours(13)) && file.Contains("AA"))
.OrderBy(file => new FileInfo(file).CreationTime.Date)
.ToArray();
我想念什么?
DateTime.Now.Date.AddDays(-1).AddHours(13)
将返回1pm ...,但是您正在检查new FileInfo(file).CreationTime.Date
,该new FileInfo(file).CreationTime.Date
始终位于午夜...对于所创建的文件昨天,将是昨天的午夜。
是的,您正在过滤该文件。 如果new FileInfo(file).CreationTime
中删除.Date
部分,则可能就是您所需要做的。
作为一个旁注,我将使用DateTime.Today
而不是DateTime.Now.Date
,并且我还将尝试避免对其进行多次评估。 如果您已经创建了Twoce,我也将使用DirectoryInfo
并坚持使用FileInfo
条目。 我会将您的查询重写为:
var cutoff = DateTime.Today.AddDays(-1).AddHours(13);
FileInfo[] files = new DirectoryInfo(FBD.SelectedPath).GetFiles("*.xls")
.Where(file => file.CreationTime >= cutoff)
.OrderBy(file => file.CreationTime)
.ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.