C# 使用lambda表达式进行文件搜索

C# 使用lambda表达式进行文件搜索,c#,lambda,C#,Lambda,我为这件事提前道歉,但现在已经很晚了,我很累。我有一个简单的问题要解决,但我就是想不出答案。我有两个标准:1)在文件名中找到文件,其中文件名符合特定的标准;2)只考虑具有创建时间的文件。有很多关于这两个标准的帖子,但是没有一篇把它们放在一起。这是我拼凑的代码(请对我好一点) string fooDay=DateTime.Now.ToString(“dd”); 字符串foomount=DateTime.Now.ToString(“MM”); 字符串fooYear=DateTime.Now.ToSt

我为这件事提前道歉,但现在已经很晚了,我很累。我有一个简单的问题要解决,但我就是想不出答案。我有两个标准:1)在文件名中找到文件,其中文件名符合特定的标准;2)只考虑具有创建时间的文件。有很多关于这两个标准的帖子,但是没有一篇把它们放在一起。这是我拼凑的代码(请对我好一点)

string fooDay=DateTime.Now.ToString(“dd”);
字符串foomount=DateTime.Now.ToString(“MM”);
字符串fooYear=DateTime.Now.ToString(“yyy”);
List T340Basics=新列表();
T340Basics=Directory.GetFiles(@“\\10.0.0.73\shared\340B\340Basics\OUT\OUT\u archive“,@“340B\u捕获的\u声明\u文件*.txt”)。其中(a=>(a.CreationTime.Month==fooomonth&&a.CreationTime.Day==fooDay&&a.CreationTime.Year==fooYear)).ToList();
此错误在Lambda表达式的CreationTime部分出现,错误是:string不包含“CreationTime”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“CreationTime”


就像我说的,我知道这个必须很简单,我就是想不出来。任何帮助都将不胜感激

您可以使用
DirectoryInfo
而不是静态
目录。GetFiles
因为
GetFiles
(在
DirectoryInfo
上)返回
FileInfo[]
而不是
字符串[]

像这样使用它:

DirectoryInfo info = new DirectoryInfo(@"\\10.0.0.73\shared\340B\340Basics\OUT\out_archive");

if(info.Exists)
{
   info.GetFiles(@"340B_Captured_Claim_File*.txt", <OptionalSearchOption>).Where(file => file.CreationDate.Date == DateTime.Now.Date).ToList(); 
}
file => file.CreationDate.Date == DateTime.Now.Date

只需比较两个日期(将两个DateTime对象中的时间组件设置为00:00:000)。

您不能执行
a.CreationTime.Date=DateTime.Now.Date
fooDay
是一个字符串,
CreationTime.Year
不是。您无法将它们与
=
进行比较。问题是对a.CreationTime的引用给了我在原始描述中列出的错误。问题是此目录中有相当多的文件,因此我希望将循环保持在最低限度。如果info.GetFiles给了我一些方法来过滤我在上面发布的标准,我很想听听。试试吧!这里的选项与
Directory.GetFile()
中的选项几乎相同,您还可以在此处设置
SearchPattern
和一些
SearchOptions
file => file.CreationDate.Date == DateTime.Now.Date