如何使用LinQ搜索不在char数组中的字符串

Slo*_*cky 4 c# linq list

List<string> words = new List<string> { "abc", "acb", "cba", "cb a", "abf", "sea", "aba", "so ap", "a b c" }; 
string allowedChars = "abc";
Run Code Online (Sandbox Code Playgroud)

我想检查列表字符串中的无效字符.我尝试使用IndexOfAny()但IndexOfAny()不检查空格.如何检查包含无效字符的字符串?

我想要的结果:"cb a","abf","sea","so ap","ab c"

Tim*_*ter 9

var invalid = words.Where(w => !w.All(allowedChars.Contains));
Run Code Online (Sandbox Code Playgroud)

如果每个单词中至少有一个未包含的字符,它会检查每个单词allowedChars.

这是相同但更冗长的一点:

var invalid = words.Where(w => w.Any(c => !allowedChars.Contains(c)));
Run Code Online (Sandbox Code Playgroud)

如果找到第一个未包含的char,则都停止执行.

正如Juharr所指出的那样,如果有许多字符允许你可以通过使用HashSet<char>而不是String:

var alloweCharSet = new HashSet<char>(allowedChars);
Run Code Online (Sandbox Code Playgroud)