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