C# 使用通配符搜索文件夹中的文件

C# 使用通配符搜索文件夹中的文件,c#,asp.net,file,fileinfo,C#,Asp.net,File,Fileinfo,我尝试使用通配符搜索文件。我的代码是: string SearchQuery =''; List<ATTFile> lstFiles = new List<ATTFile>(); if (Directory.Exists(FilePath)) { DirectoryInfo dirInfo = new DirectoryInfo(FilePath);

我尝试使用通配符搜索文件。我的代码是:

          string  SearchQuery ='';
           List<ATTFile> lstFiles = new List<ATTFile>();
            if (Directory.Exists(FilePath))
            {
                DirectoryInfo dirInfo = new DirectoryInfo(FilePath);//File PAth is not a problem.

              foreach (FileInfo file in dirInfo.GetFiles(SearchQuery + "?"))//Want help here  
              {

                    ATTFile obj = new ATTFile();
                    obj.FileName = file.Name;
                    obj.Folder = file.Directory.ToString();
                    obj.Size = int.Parse(file.Length.ToString());
                    obj.Extension = file.Extension;
                    lstFiles.Add(obj);

                }


            }
如果我给出完整的文件名,使用上面的代码意味着它的工作。
SearchQuery=“and.jpg”
。但是如果我给出
SearchQuery=“a”
我想要一个结果

and.jpg
asp.jpg
使用
a
启动所有文件。是否可以在
GetFiles(SearchQuery+“?”)中使用通配符
。谢谢。

使用,您可以使用它指定通配符

* - Zero or more characters.

? - Exactly one character.
您可以尝试:

dirInfo.GetFiles("a*");
您可以在查询中使用
*
而不是
来获取以
searchquery
开头并以任何其他字符结尾的文件

您可以使用采用搜索模式的:

String fileNamePart = "a";
String fileExtension= ".jpg";
String searchPattern = String.Format("{0}*{1}", fileNamePart, fileExtension);
dirInfo.GetFiles(searchPattern)
如果希望在一个查询中实现所有功能,还可以使用LINQ:

lstFiles = dirInfo.EnumerateFiles(searchPattern)
                  .Select(file => new ATTFile(){
                      FileName = file.Name;
                      Folder = file.Directory.ToString();
                      Size = int.Parse(file.Length.ToString());
                      Extension = file.Extension;
                  }).ToList();
请注意,我在这里使用它是因为当您处理许多文件和目录时,它可以更有效地利用资源

lstFiles = dirInfo.EnumerateFiles(searchPattern)
                  .Select(file => new ATTFile(){
                      FileName = file.Name;
                      Folder = file.Directory.ToString();
                      Size = int.Parse(file.Length.ToString());
                      Extension = file.Extension;
                  }).ToList();