C# 如何在c中从搜索中排除数组#

C# 如何在c中从搜索中排除数组#,c#,arrays,search,C#,Arrays,Search,我有一个数组。比方说 private string[] WhiteList = { "abcxyz.cs", "mouseapi.dll", "SensitivtyFix.asi", "drake.mp3" }; 现在我想从目录/文件搜索中排除该数组。我如何做到这一点 对于此搜索,我使用另一个名为BlackList的数组,从中可以获取所需的文件,但无法从数组白名单中排除文件 for (int i = 0; i

我有一个数组。比方说

private string[] WhiteList =
     {
        "abcxyz.cs",
        "mouseapi.dll",
        "SensitivtyFix.asi",
        "drake.mp3"
     };
现在我想从目录/文件搜索中排除该数组。我如何做到这一点

对于此搜索,我使用另一个名为BlackList的数组,从中可以获取所需的文件,但无法从数组白名单中排除文件

for (int i = 0; i < GetSize; ++i)
        {
            foreach (var File in DirInf.GetFiles("*", SearchOption.AllDirectories))
            {
                if (File.FullName.Contains(Blacklist[i]) && !File.FullName.Contains(WhiteList[i]))

                {
                    listBox1.Items.Add("File: " + File.FullName);
                }
            }
        }
for(int i=0;i
您需要

 if (BlackList.Contains(File.FullName) && !WHiteList.Contains(File.FullName)))
虽然这看起来很奇怪,因为你不能把白名单上的名字列入黑名单。也许您需要| | not&

您需要的条件(用于LINQ
中的
函数)是


你的意思是,排除数组中的文件名?@OldProgrammer是的,我希望搜索返回黑名单过滤器并排除数组白名单中给定的文件。不是那么奇怪,也许黑名单包含
rake
和白名单包含(如问题所述)
drake.mp3
这说明了你的建议有什么问题——根据问题,列表中的一项包含在文件名中(部分匹配)。整个文件名不在列表中。黑名单包含一个扩展名不同的文件列表,如.cs,因此它返回一个扩展名为.cs的大文件列表。我需要从结果中排除白名单中扩展名为.cs的文件。我希望清楚。我想你的意思是
Any
Exists
,因为
Exists
List
的一种方法,它们实际上是数组。@juharr:它也是以数组命名的,但是静态的。感谢您指出问题所在,我可能输入了变量名,并认为它们实际上是列表。
Predicate<FileInfo> filter =
      f => Array.Exists(blackList, f.FullName.Contains) && 
             !Array.Exists(whiteList, f.FullName.Contains);
foreach (var file in DirectoryInfo.GetFiles("*", SearchOption.AllDirectories).Where(filter))
    listBox1.Items.Add(file);