在列表或数组中搜索现有字符串

时间:2013-03-20 21:30:50

标签: c# list

我需要一个包含用户将添加的名称的数组或列表。我还需要执行一个检查,如果该名称已经存在,则不允许添加名称。我知道这应该相当简单,但我找不到任何解决方案。

3 个答案:

答案 0 :(得分:2)

使用HashSet<string>; HashSet是独特元素的集合。如果添加了元素,他们的.Add方法会返回true,否则会返回false

如果你不能使用这样的数据结构,那么只需在列表上调用.Contains并传入要添加的元素 - 如果它返回true,则不要添加它。否则,你很高兴可以将它附加到列表中。

答案 1 :(得分:2)

我想你可能会追随:

if (list.Contains(name))

或者:

if (array.Contains(name))

就这么简单! List<T>T[]都使用Contains方法实现IList<T>接口。当然,这是假设您对完全匹配感到满意。如果你需要更复杂的东西,我可能会使用LINQ中的Any。例如:

if (array.Any(x => x.StartsWith(name))

答案 2 :(得分:0)

如果列表被实例化,这将起作用:

//List<string> list
list.contains(specifiedstring) 

否则,如果它是一个带字符串字段的复杂对象 - List,那么我会使用:

//For a List<ClassA> list
var exists = list.Any(x => !String.IsNullOrWhitespace(x.StringAField) && 
                          x.StringAField.Equals(string));

这为您提供了检查if语句或其他条件的bool值。