Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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搜索不在字符数组中的字符串 List words=新列表{“abc”、“acb”、“cba”、“cb a”、“abf”、“sea”、“aba”、“so ap”、“a b c”}; 字符串allowedChars=“abc”;_C#_List_Linq - Fatal编程技术网

C# 如何使用LinQ搜索不在字符数组中的字符串 List words=新列表{“abc”、“acb”、“cba”、“cb a”、“abf”、“sea”、“aba”、“so ap”、“a b c”}; 字符串allowedChars=“abc”;

C# 如何使用LinQ搜索不在字符数组中的字符串 List words=新列表{“abc”、“acb”、“cba”、“cb a”、“abf”、“sea”、“aba”、“so ap”、“a b c”}; 字符串allowedChars=“abc”;,c#,list,linq,C#,List,Linq,我想检查列表字符串中的无效字符。我尝试使用IndexOfAny(),但IndexOfAny()不检查空白。如何检查包含无效字符的字符串 我想要的结果是:“cba”,“abf”,“sea”,“soap”,“abc” 它检查每个单词中是否至少有一个字符未包含在allowedChars中 这是相同的,但更详细一点: var invalid = words.Where(w => !w.All(allowedChars.Contains)); 如果发现第一个未包含的字符,则两者都会停止执行 正如J

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

我想要的结果是:“cba”,“abf”,“sea”,“soap”,“abc”

它检查每个单词中是否至少有一个字符未包含在
allowedChars

这是相同的,但更详细一点:

var invalid = words.Where(w => !w.All(allowedChars.Contains));
如果发现第一个未包含的字符,则两者都会停止执行

正如Juharr所指出的,如果允许使用许多字符,您可以使用
哈希集而不是
字符串来提高效率:

var invalid = words.Where(w => w.Any(c => !allowedChars.Contains(c)));
var alloweCharSet=新哈希集(allowechars);

返回包含除allowedChars以外的任何其他字符的所有单词:

var alloweCharSet = new HashSet<char>(allowedChars);

虽然这会给出所需的结果,但有人指出,通过调用Except,这将为列表中的每个
单词
创建一个新的
集合
,用于
allowedChars
。这可能不会提供最佳性能

是否应返回“bcaa”
<代码>“”
<代码>“a”
<代码>“ac”
?@mjwills”、“a”、“ac”不应return@mjwills“bcaa”不应返回到取决于字符数,最好将它们放入
哈希集中
。如果要使用
除外
,最好将
允许的字符
放入
哈希集中
然后使用
包含
-perf将比这好得多。因为此代码有效地为每个单词创建了一个
哈希集
,而不是一个
哈希集
-。
var alloweCharSet = new HashSet<char>(allowedChars);
var result = words.Where(w => w.Except(allowedChars).Any());