繁体   English   中英

.where(Date.AddHours)过滤器似乎不起作用

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM