检查字符串是否不是数组的一部分(C#,Linq)

时间:2014-03-31 19:48:26

标签: c# arrays linq

我试图使用Linq来确定字符串是否不在数组中。我使用的代码是:

if (!stringArray.Any(soughtString.Contains)){
            doStuff();}

但它没有用。显然创建一个foreach循环就足够了,但我想理解为什么这条线不起作用。是的,该文件有using System.Linq;

2 个答案:

答案 0 :(得分:5)

你不是在询问字符串是否不在数组中,而是在询问数组中的所有字符串是否都是其他字符串中的子字符串。显然至少有一个是,即使它不相等。

您只想进行简单的Contains检查:

if(!stringArray.Contains(soughtString))

答案 1 :(得分:3)

您目前正在通过" Any"功能"包含"方法(然后传递给数组中的每个字符串)。换句话说:

array.Any(s => soughtString.Contains(s));

可能,你想要另一种方式:

array.Any(s => s.Contains(soughtString));