如何使用 linq 使用文件名从目录中筛选文件

本文关键字:筛选 文件 文件名 何使用 linq | 更新日期: 2023-09-27 18:28:16

var GetFileByFileName = Directory.GetFiles(SourceFilePath)
                                       .Select(x => new FileInfo(x))
                                       .Where(x => x.Name==SourceFileName)
                                       .Take(1)
                                       .ToArray();

这是我按指定文件名获取文件的代码。在这里我正在使用数组.在这里,SOURCEFILENAME 是一个具有文件名的字符串变量。但它不起作用。我可以从目录中获取所有文件。但我只需要一个基于 SOURCEFILE 名的目录中的文件。?请帮助我..谢谢。.

如何使用 linq 使用文件名从目录中筛选文件

如果你想使用你当前使用的方式,那么你已经按照下面提到的方式实现

 var GetFileByFileName = Directory.GetFiles(@"D:'Re'reactdemo")
                                       .Select(x => new FileInfo(x))
                                       .Where(x => x.Name == "package.json")
                                       .Take(1)
                                       .ToArray();

检查您的 SourcePath 应该看起来像我在代码中硬编码的内容,并且您的源文件应该带有扩展名

你的代码很好,应该可以工作。

或者,您可以在没有Linq的情况下执行此操作。 Directory.GetFiles有一个接受文件搜索模式的重载,您可以在其中传递文件名。

var fileInfo = Directory.GetFiles(SourceFilePath, SourceFileName);

其中,例如

var SourceFilePath = @"C:'MyBackUp'Files";
var SourceFileName = @"MyTextFile.txt";

请参阅此处以供参考。

为什么需要同时使用linq在所有文件中搜索,同时具有文件名和路径?您的linq查询正在比较==源文件名,这是通过使用标准文件操作直接查找文件将获得的。

var file = Path.Combine(SourceFilePath, SourceFileName);
//check if exists
if (File.Exists(file))
{
  // open your file to read it as needed
  // e.g. reading as text:
  var content = File.ReadAllText(file);
}