我试图从包含特定值的字符串数组中删除所有元素。在这种情况下,我的字符串数组包含一堆文件,其文件夹结构将在以后的操作中压缩。我需要排除包含的特定文件,例如" CDN"值。
示例字符串结构将是这样的
C:\Production\Websites\WebSite1\index.html
C:\Production\Websites\WebSite1\product.html
C:\Production\Websites\CDN\content.html
C:\Production\Websites\CDN\frame.html
C:\Production\Websites\WebSite2\index.html
C:\Production\Websites\WebSite2\product.html
值只是示例...但我需要从包含" \ CDN \"的列表中完全删除列表中的元素。
这就是我获取文件夹的方式。
string[] files = Directory.GetFiles(@"C:\Production\Websites", "*.*", SearchOption.AllDirectories);
我试过这样的事情,但显然我被卡住了......
string[] files = Directory.GetFiles(@"C:\Production\Websites", "*.*", SearchOption.AllDirectories).Where(s => !s.Contains("CDN"))....???
有什么想法吗? 干杯
答案 0 :(得分:2)
来自MSDN
EnumerateFiles
和GetFiles
方法的不同之处如下:当您使用EnumerateFiles
时,您可以在返回整个集合之前开始枚举名称集合;当您使用GetFiles
时,必须等待返回整个数组,然后才能访问该数组。因此,当您使用许多文件和目录时,EnumerateFiles
可以更有效。
so:枚举文件,过滤序列并生成结果数组
string[] files = Directory.EnumerateFiles(@"C:\Production\Websites", "*.*", SearchOption.AllDirectories)
.Where(s => !s.Contains("CDN"))
.ToArray();