我想做一个没有重复项的列表,这个文件有太多带标识符的行,有时会重复。当我尝试使用List<string>.Contains
时,它无法正常工作。我认为这是因为我直接添加对象而不是字符串。
public List<string> obterRelacaoDeBlocos()
{
List<string> listaDeBlocos = new List<string>();
foreach(string linhas in arquivos.obterLinhasDoArquivo())
{
string[] linhaQuebrada = linhas.Split('|');
string bloco = linhaQuebrada[1].ToString();
if (listaDeBlocos.Contains((string)bloco) != true)
{
listaDeBlocos.Add( bloco + ":" + listaDeBlocos.Contains(bloco).ToString());
}
}
return listaDeBlocos;
}
答案 0 :(得分:0)
在将字符串添加到列表之前,您将":" + listaDeBlocos.Contains(bloco).ToString()
附加到字符串。如果您再次遇到相同的字词,则无法匹配,因此Contains
将返回false
,并且会再次添加相同的字词。
我不知道将": true"
附加到列表中每个字符串的末尾有什么意义,所以只需删除该部分即可。
if (!listaDeBlocos.Contains(bloco))
{
listaDeBlocos.Add(bloco);
}
由于您只对每个字符串的一部分感兴趣,根据您的分割方式,您可以使用LINQ重写您的方法。这是未经测试但应该有效:
public List<string> obterRelacaoDeBlocos()
{
return arquivos.obterLinhasDoArquivo().Select(x => x.Split('|')[1]).Distinct().ToList();
}