1

我有一个多行文本,我想删除其中的重复行。我使用以下代码分隔数组中的行。

string[] lines = txtPathological.Text.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

但是没有命令行.Distinct()。有没有办法做到这一点 ?

4

3 回答 3

1
        var lines = txtPathological.Text.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        var dLines = lines.ToList().Distinct();

编辑:

        string[] lines = txtPathological.Text.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        List<string> dLines = new List<string>();
        foreach (var line in lines)
        {
            if (!dLines.Contains(line))
            {
                dLines.Add(line);
            }
        }
于 2013-05-30T08:03:45.577 回答
1

这对我有用...

String[] lines = { "my line 1", "my line 2", "mhyline3", "lslfkdfkjdf", "my line 2", "my line 1", "my line 1", "LKDJF" };
List<String> list = new List<String>();
foreach (String s in lines)
{
    if (!list.Contains(s))
        list.Add(s);
}

"list" 然后将包含 distict 行,您可以使用以下命令返回数组:

String[] distinctLines = list.ToArray();

如果这不起作用,我怀疑您的行中有一些东西在欺骗 Contains() 方法。如果是这样,您可能必须创建一个方法来替换本地或扩展的 Contains(),以处理对行的检查。

于 2013-05-30T11:06:41.510 回答
1

你可以试试:

string[] lines = txtPathological.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        List<string> templines = new List<string>(lines);
        List<string> tempList = new List<string>();
        for (int i = 0; i < templines.Count; i++)
        {               
           if (!tempList.Contains(lines[i])) tempList.Add(lines[i]);
        }  

TempList 是您的排序列表。希望它可以帮助。

于 2013-05-30T08:21:28.330 回答