使用LINQ包含值从字符串数组中删除元素

时间:2015-09-18 08:25:22

标签: c# arrays linq

我试图从包含特定值的字符串数组中删除所有元素。在这种情况下,我的字符串数组包含一堆文件,其文件夹结构将在以后的操作中压缩。我需要排除包含的特定文件,例如" 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"))....???

有什么想法吗? 干杯

1 个答案:

答案 0 :(得分:2)

来自MSDN

  

EnumerateFilesGetFiles方法的不同之处如下:当您使用EnumerateFiles时,您可以在返回整个集合之前开始枚举名称集合;当您使用GetFiles时,必须等待返回整个数组,然后才能访问该数组。因此,当您使用许多文件和目录时,EnumerateFiles可以更有效。

so:枚举文件,过滤序列并生成结果数组

string[] files = Directory.EnumerateFiles(@"C:\Production\Websites", "*.*", SearchOption.AllDirectories)
                          .Where(s => !s.Contains("CDN"))
                          .ToArray();