Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ Contains值从字符串数组中删除元素_C#_Arrays_Linq - Fatal编程技术网

C# 使用LINQ Contains值从字符串数组中删除元素

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\

我试图从包含特定值的字符串数组中删除所有元素。在本例中,我的字符串数组包含一堆文件及其文件夹结构,这些文件将在以后的操作中压缩。我需要排除包含“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();