使用索引删除重复项

时间:2017-05-26 14:37:33

标签: vb.net

我的文本文件包含以下内容:

"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

如果有人能够启发我会非常感激!

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ实现这一点:

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())

但我希望这个领域永远不会包含逗号。您应该使用支持引用字符的csv解析器,而不是TextFieldParser