在字符串列表中搜索并返回为bool

时间:2013-11-26 11:45:35

标签: c# list

我得到一个名为List<string>的{​​{1}}:

Test

我想使用List<string> Test = new List<string>(); 为其添加字符串,但首先我要检查它是否已存在于列表中。

我想到了这样的事情:

Test.Add();

但是,这会返回错误。

5 个答案:

答案 0 :(得分:3)

如果您不想添加项目,我假设您已经添加

试试这个:

if (!Test.Contains("Teststring"))
{
   Test.Add("Teststring");
}

答案 1 :(得分:2)

如果你不想两次添加一个项目,那么你可以使用HashSet<T>作为一个很好的指标,它可以提高效率,但不允许重复项(如仅Dictionary键)。

HashSet<string> Test = new HashSet<string>();
bool newString = Test.Add("Teststring");

如果您需要使用列表,请使用List.Contains检查字符串是否已在列表中。

What is the difference between HashSet and List in C#?

但是您的代码表明您只想添加重复项。我认为这不是故意的。

答案 2 :(得分:1)

Any收到谓词。它确定集合中的任何元素是否与特定条件匹配。您可以使用循环结构强制执行此操作。但Any扩展方法提供了另一种方法。 见:

bool b1 = Test.Any(item => item == "Teststring");

您也可以使用:

if (!Test.Contains("Teststring"))
{
...
    }

答案 3 :(得分:1)

在我看来,您在这里使用了错误的数据结构。您应该使用Hashset来避免重复。

Hashset的查找时间是O(1),而对于列表,它是O(n)

  

HashSet类提供高性能的集合操作。集合是一个不包含重复元素的集合,其元素没有特定的顺序。

这就是你的代码的样子。

HashSet<string> Test = new HashSet<string>();
Test.Add("Teststring");

答案 4 :(得分:0)

使用Test.Contains("TestString");