2013-10-02 145 views
0

我有一个问题来获取一些日期范围内的文件。我在这里搜索并找到了很多答案,但我无法解决我的问题。通过创建日期获取文件

所以,我有这样的方法来获取这些文件:

DateTime fromDate = tpFrom.Value; 
DateTime toDate = tpTo.Value; 
var files = new DirectoryInfo(origemPath).GetFiles() 
      .Where(
       f => f.CreationTime.Date >= fromDate && 
       f.CreationTime.Date <= toDate); 

foreach (var file in files) 
{ 
    ... 
}    

但是得到的所有文件,忽略了那里......

没有fromdate和todate是从一个DateTimePicker

调试运行

一个文件中的文件: one file in files

FROM日期值:

fromDate value

编辑:

我尝试了所有的答案在这里,并没有什么工作。怎么我不需要最好performatic方法,我解决我的问题是这样的:

var files = new DirectoryInfo(origemPath).GetFiles(); 
    foreach (var file in files) 
      { 
       if (file.CreationTime.Date >= fromDate && file.CreationTime.Date <= toDate) 
       { 
        ... 
       } 

      } 
+3

这似乎很好地工作,我(它得到正确的文件) –

+0

你能检查缩小fromDate和toDate之间的区别? – Kaf

+0

我把一些图像显示的值。 –

回答

1

如果tpFrom和TPTP是拾荒者,也许下面将做的工作

DateTime fromDate = tpFrom.Value.Date; 
DateTime toDate = tpTo.Value.Date; 
+0

我试过了,没有工作。 –

0

我认为, Where子句不执行,请检查此link.以查找有关它的更多详细信息。在LINQ中,查询的执行通常会延迟到实际请求数据的时刻。在files.Count()行中,你实际上得到了这些值。查看更多关于LINQ and dererred execution的信息。

你应该尝试一些类似如下:

 DirectoryInfo diInbox = new DirectoryInfo(location); 
    FileInfo[] InboxFiles = diInbox.GetFiles(); 
    var files = from file in InboxFiles 
       where file.CreationTime >= FromDate 
       select file; 
    foreach (var file in files){...} 
+0

我试了一下,没有用。仍然返回所有文件 –

1
private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName) 
{ 
    if (toDate > fromDate) 
    { 
     List<string> list = Directory.GetFiles(directoryName).ToList(); 

     return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList(); 
    } 
    return new List<string>(); 
} 
1

尝试是这样的:

private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName) 
{ 
    if (toDate > fromDate) 
    { 
     List<string> list = Directory.GetFiles(directoryName).ToList(); 

     return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList(); 
    } 
    return new List<string>(); 
} 
相关问题