编写LINQ查询来搜索所有子目录?

时间:2010-10-05 10:09:24

标签: linq c#-4.0

我有一个解决方案文件夹,我在其中收集所有.dll并存储在数组列表中。我必须搜索所有子目录。如何编写LINQ查询?

var r = dir.GetFiles("*.dll")
           .Where<FileInfo>(i => i.Name.StartsWith("SAMPLE"))
           .ToList();

这是正确的吗?例如,我20 dll的名称为“SAMPLE”

3 个答案:

答案 0 :(得分:8)

我建议你使用EnumerateFiles方法:

var r = Directory
    .EnumerateFiles(@"c:\work", "*.dll", SearchOption.AllDirectories)
    .Where(file => file.StartsWith("SAMPLE"))
    .ToList();

甚至更好地使用通配符模式来过滤而不是在内存中过滤:

var r = Directory
    .EnumerateFiles(@"c:\work", "SAMPLE*.dll", SearchOption.AllDirectories)
    .ToList();

答案 1 :(得分:0)

是的,您的LINQ是正确的。它应该工作正常。 小修正:那里你不需要tye参数。 (编译器可以推断它。)

var list = dir.GetFiles("*.dll").Where(i => i.Name.StartsWith("SAMPLE")).ToList();

答案 2 :(得分:0)

是的,这是正确的。

我很快就创建了类似的代码来测试自己,但它确实有用。

DirectoryInfo dir = new DirectoryInfo(@"C:\Test");
var files = dir.GetFiles("*.jpg").Where<FileInfo>(i => i.Name.StartsWith("Tet")).ToList();

files.ForEach(file => Console.WriteLine(file.Name));