1

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

4

3 回答 3

2

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

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

于 2013-03-20T21:32:24.997 回答
2

我想你可能只是在追求:

if (list.Contains(name))

或者:

if (array.Contains(name))

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

if (array.Any(x => x.StartsWith(name))
于 2013-03-20T21:32:31.433 回答
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 值。

于 2013-03-20T21:37:07.867 回答