2017-05-26 54 views
-3

我有一个包含以下文本文件中删除重复项:使用指数

"hello", "say hello" 
"hello", "say hi" 
"hi", "say hi" 
"hi", "good morning" 

我想只检查每对有重复的第一个值,如果重复发现除去对。

我想从以前的集合中,对这样的结果:

"hello", "say hello" 
"hi", "say hi" 

我尝试使用下面的代码,但结果不是我想要的。

Dim SR As New StreamReader("file.txt") 
    Dim MyArray As New List(Of string) 
    Dim strLine() As String 
    Do While SR.Peek <> -1 
     strLine = SR.ReadLine().Split(","c)  
     If MyArray.Contains(strLine(0)) = False Then 
      MyArray.Add(strLine(0) & "," & strline(1)) 
     End If 
    Loop 

如果有人能启发我,将不胜感激!如果你要重写文件

Dim distinctByFirstColumn = From line In File.ReadLines("file.txt") 
          Let fields = line.Split(","c) 
          Let firstField = fields(0).Trim() 
          Group line by firstField Into firstFieldGroup = Group 
          Select firstFieldGroup.First() ' you want first line of duplicates 

File.WriteAllLines("file.txt", distinctByFirstColumn.ToList()) 

但我希望thise领域从未包含逗号本身

+0

你需要在C#中使用它,或者标记是什么? –

+0

如果您使用VB.NET,为什么要标记c#? –

+0

c#或vb.net对我来说都是好的 – jeon

回答

1

可以实现与LINQ。您应该使用支持引用字符的csv解析器,而不是像TextFieldParser那样。

+0

你的代码工作就像魅力!赞赏 – jeon

+0

@jeon:考虑接受它 –