2013-05-30 41 views
1

我有一個多行文本,我想刪除它中的重複行。我使用下面的代碼來分隔數組中的行。從.net 2.0中的文本框中刪除重複的行

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

但是沒有命令lines.Distinct()。有沒有辦法做到這一點 ?

回答

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); 
} 

「列表」,然後將含有DISTICT線,你可以使用我們回到一個數組:

String[] distinctLines = list.ToArray(); 

如果這不工作,我會懷疑你的線條是愚弄Contains()方法的。如果是這樣,您可能需要製作一個方法來替換處理檢測行的Contains(),本地或擴展。

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); 
      } 
     } 
+0

.NET 2.0 winforms中沒有var。 – user1292656

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是你的排序列表。 希望它可以幫助。

+0

'System.Array'不包含ToList()的定義 – user1292656

+0

您可以試試這個嗎? –

+0

它不工作。它再次打印重複行 – user1292656