在 asp.net 中按日期过滤 DirectoryInfo 文件

Posted

技术标签:

【中文标题】在 asp.net 中按日期过滤 DirectoryInfo 文件【英文标题】:Filter DirectoryInfo files by date in asp.net 【发布时间】:2011-12-04 00:41:41 【问题描述】:

我正在使用指定路径 (DirectoryInfo) 中的文件填充数据网格控件。 我想根据用户指定的日期范围(开始日期和结束日期)过滤文件。

在搜索 S/O 时,我找到了 this 帖子,但在 DateComparer 上出现错误(“'DateComparer' 是一种类型,不能用作表达式。”

关于如何按日期过滤的任何其他建议?

这是我的代码:

        Dim dirInfo As New DirectoryInfo(strDirectoryPath)
        Dim dStartDate As DateTime = "03/01/2011"
        Dim dEndDate As DateTime = "6/30/2011"
        Dim Files As FileInfo = dirInfo.GetFiles().Where(Function(Files) Files.CreationTime >= (dStartDate) AndAlso Files.CreationTime <= dEndDate)

            datagrid.DataSource = Files
            datagrid.DataBind()

【问题讨论】:

【参考方案1】:
DateTime your_start_date = new DateTime(2011,1,1);
DateTime your_end_date = new DateTime(2011,10,1);
FileInfo [] files = new DirectoryInfo(@"c:\").GetFiles().Where(x=>x.CreationTime>=(your_start_date) && x.CreationTime<=(your_end_date)).ToArray();

foreach(var item in files)

 Console.WriteLine(item.Name);

在我的测试用例上打印出来:

copy_one.jpg
copy_one_one.jpg
copy_one_one_one.jpg
hiberfil.sys
one.jpg
pagefile.sys
PcapDotNet.snk

更新(VB 版):

Dim your_start_date As New DateTime(2011, 1, 1)
Dim your_end_date As New DateTime(2011, 10, 1)
Dim files As FileInfo() = New DirectoryInfo("c:\").GetFiles().Where(Function(x) x.CreationTime >= (your_start_date) AndAlso x.CreationTime <= (your_end_date)).ToArray()

For Each item As FileInfo In files
    Console.WriteLine(item.Name)
Next

【讨论】:

最后一行中的“x”应该是什么? GetFiles() 方法返回一个FileInfo 类型的数组;因此在Where(x...) 中,x 是一个FileInfo 对象。 所以它会像 "files=>files.CreationTime" ? @Troy 您正在尝试获取指定日期范围内的文件,对吗?如果是这样,那么是的,files=>files.CreationTime>= somedate andalso files.CreationTime 是的,正在尝试获取某个日期范围内的文件。查看我的原始帖子,我添加了我的代码。

以上是关于在 asp.net 中按日期过滤 DirectoryInfo 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Gatsby 和 Contentful 中按日期过滤

如何在 django 中按日期范围过滤记录?

在 CodeIgniter 中按日期过滤 MySQL 条目

在 Django admin 中按自定义日期范围过滤

Office 365 日历 API - 在 C# 客户端库中按日期过滤事件

groupby中按日期时间过滤的有效方法