我有一个解决方案文件夹,我在其中收集所有.dll并存储在数组列表中。我必须搜索所有子目录。如何编写LINQ查询?
var r = dir.GetFiles("*.dll")
.Where<FileInfo>(i => i.Name.StartsWith("SAMPLE"))
.ToList();
这是正确的吗?例如,我20 dll的名称为“SAMPLE”
答案 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));