C# 使用LINQ Contains值从字符串数组中删除元素
我试图从包含特定值的字符串数组中删除所有元素。在本例中,我的字符串数组包含一堆文件及其文件夹结构,这些文件将在以后的操作中压缩。我需要排除包含“CDN”值的特定文件 示例字符串结构如下所示C# 使用LINQ Contains值从字符串数组中删除元素,c#,arrays,linq,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\
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"))....???
有什么想法吗?
干杯
EnumerateFiles
和GetFiles
方法的不同之处如下:使用EnumerateFiles
时,可以在返回整个集合之前开始枚举名称集合;使用GetFiles
时,必须等待返回整个名称数组,然后才能访问该数组。因此,当您处理许多文件和目录时,EnumerateFiles
会更有效
所以:枚举文件,过滤序列并生成结果数组
string[] files = Directory.EnumerateFiles(@"C:\Production\Websites", "*.*", SearchOption.AllDirectories)
.Where(s => !s.Contains("CDN"))
.ToArray();