C# .Where(Date.AddHours)过滤器不使用';好像不行

C# .Where(Date.AddHours)过滤器不使用';好像不行,c#,C#,我正在整理从昨天下午1点到现在创建的文件列表。我尝试使用以下代码:messagebox显示我尝试引用的正确时间,但筛选器似乎不起作用。如果我删除“AddHours(13)”,它会正确过滤 MessageBox.Show(DateTime.Now.Date.AddDays(-1).AddHours(13).ToString()); string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls") .Where(file =>

我正在整理从昨天下午1点到现在创建的文件列表。我尝试使用以下代码:messagebox显示我尝试引用的正确时间,但筛选器似乎不起作用。如果我删除“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)将在下午1点返回。。。但是您要检查的是
新文件信息(file).CreationTime.Date
,它总是在午夜。。。对于昨天创建的文件,它将在昨天午夜创建

是的,你过滤掉了那个文件。如果从
新文件信息(file).CreationTime
中删除
.Date
部分,您可能只需要这样做

作为旁注,我会使用
DateTime.Today
而不是
DateTime.Now.Date
,并且我也会尽量避免多次评估它。我也会使用
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();

那么,
newfileinfo(file).CreationTime.Date
显示了什么呢?