LINQ 和文件目录

许多文件系统操作实质上是查询,因此非常适合使用 LINQ 方法。

提示

如果要对多种类型的文件和文档的内容执行编程查询,可以考虑使用 Windows Desktop Search Engine(Windows 桌面搜索引擎)。 虽然当前无法使用 LINQ 进行查询,但它提供了功能强大的索引服务,可有效地管理文件系统的复杂性。

请注意,本节中的查询是非破坏性查询。 它们不用于更改原始文件或文件夹的内容。 这遵循了查询不应引起任何副作用这条规则。 通常,修改源数据的任何代码(包括执行创建/更新/删除运算符的查询)应与只查询数据的代码分开。

本节包含下列主题:

注释

创建准确表示文件系统的内容并适当处理异常的数据源,存在一些难度。 本节中的示例创建 FileInfo 对象的快照集合,该集合表示指定的根文件夹及其所有子文件夹下的所有文件。 每个 FileInfo 的实际状态可能会在您开始和结束执行查询过程中发生更改。 例如,您可以创建 FileInfo 对象的列表来用作数据源。 如果您尝试通过查询访问 Length 属性,则 FileInfo 对象会尝试访问文件系统来更新 Length 的值。 如果该文件不再存在,则您会在查询中获得 FileNotFoundException,即使您没有直接查询文件系统也是如此。 本节中的一些查询使用不同的方法,在某些情况下使用该方法不会出现这些特定异常。 另一种方法是使用 FileSystemWatcher 保持数据源动态更新。

请参见

概念

LINQ to Objects