C# 列表的问题<;字符串>;通过变量添加字符串时

C# 列表的问题<;字符串>;通过变量添加字符串时,c#,string,list,C#,String,List,我想做一个列表,没有重复从一个文件有太多的行标识符,有时重复。当我尝试使用List.Contains时,它不起作用。我想这是因为我直接添加对象而不是字符串 public List<string> obterRelacaoDeBlocos() { List<string> listaDeBlocos = new List<string>(); foreach(string linhas in arquivos.obterLinhasDoArqu

我想做一个列表,没有重复从一个文件有太多的行标识符,有时重复。当我尝试使用
List.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;
}
公共列表obterRelacaoDeBlocos()
{
List listaDeBlocos=新列表();
foreach(arquivos.obterLinhasDoArquivo()中的字符串linhas)
{
字符串[]linhaQuebrada=linhas.Split(“|”);
字符串bloco=linhaQuebrada[1]。ToString();
if(listaDeBlocos.Contains((字符串)bloco)!=true)
{
Add(bloco+:“+listaDeBlocos.Contains(bloco.ToString());
}
}
返回listaDeBlocos;
}
在将字符串添加到列表之前,您正在将“+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();
}
公共列表obterRelacaoDeBlocos()
{
返回arquivos.obterlinhasdarquivo();
}

你好。。。欢迎来到stackoverflow。如果你用英语发帖的话,你将有最大的机会得到答案。一个道具,一个对话,一个解释,一个变奏,一个解析。我很难读到这篇文章,因为它是一门外语,但是
独特的()
可以帮助你。我投票结束这个问题作为离题,因为它不是英文的-这是一个只有英文的网站-请尊重网站的规则!抱歉用葡萄牙语。这个网站是我的一个朋友推荐的,我没有遵守它的规则(是的,我知道我很懒)。但是,尽管如此,@GrantWinney还是帮助了我。谢谢大家,下次我会用英语问:D