检查列表是否包含字符串

时间:2012-07-24 18:48:06

标签: c#

如何检查列表是否包含字符串或后跟该字符串的任何数字? 我需要在列表中添加字符串。在列表中添加它时,我必须检查该列表中是否已存在该字符串。如果是这样,需要插入具有整数计数的字符串。 也就是说,如果name已经存在,则意味着它应该作为“Name1”插入。如果我再次添加Name意味着它应该作为name2插入。等等... 我怎样才能做到这一点?

List<Names> NameList=new List<Names>();

Name name=new Name();
name.Name="Name";
NameList.Add(Name);

Name name1=new Name();
name1.Name="Name";
NameList.Add(Name1);

Name name2=new Name();
name2.Name="Name";
NameList.Add(Name2);

Public class Name
{
 string Name {get;set; }
}

2 个答案:

答案 0 :(得分:1)

您的代码无法编译,但我假设您正在讨论List<string>。如果是这样,算法可能是:

string val = "Name";
string toInsert = val;
int n = 1;
while(list.Contains(toInsert))
{
   toInsert = val + n++;
}
list.Add(toInsert);

答案 1 :(得分:0)

您应该查看HashSet<T>课程。

有了这个,你可以在O(1)中进行查找。但请注意,这会使用类的Equals()GetHashCode()方法来检查是否相等。因此,要么将简单的字符串放入集合中进行检查,要么为Name类编写适当的IEqualityComparer,并将其实例放入hashset的构造函数中。如果您需要帮助来撰写良好的GetHashCode实施方案,请查看此SO question