Vorgehensweise: Aufteilen einer Datei in mehrere Dateien mithilfe von Gruppen (LINQ) (Visual Basic)
Dieses Beispiel zeigt eine Möglichkeit, den Inhalt von zwei Dateien zusammenführen und dann einen Satz von neuen Dateien zu erstellen, die die Daten auf neue Weise organisieren.
So erstellen Sie die Datendateien
Kopieren Sie diese Namen in eine Textdatei namens „names1.txt“, und speichern Sie sie in Ihrem Projektordner:
Bankov, Peter Holm, Michael Garcia, Hugo Potra, Cristina Noriega, Fabricio Aw, Kam Foo Beebe, Ann Toyoshima, Tim Guy, Wey Yuan Garcia, Debra
Kopieren Sie diese Namen in eine Textdatei namens „names2.txt“, und speichern Sie sie in Ihrem Projektordner: Beachten Sie, dass die beiden Dateien einige Namen gemeinsam haben.
Liu, Jinghao Bankov, Peter Holm, Michael Garcia, Hugo Beebe, Ann Gilchrist, Beth Myrcha, Jacek Giakoumakis, Leo McLin, Nkenge El Yassir, Mehdi
Beispiel
Class SplitWithGroups
Shared Sub Main()
Dim fileA As String() = System.IO.File.ReadAllLines("../../../names1.txt")
Dim fileB As String() = System.IO.File.ReadAllLines("../../../names2.txt")
' Concatenate and remove duplicate names based on
Dim mergeQuery As IEnumerable(Of String) = fileA.Union(fileB)
' Group the names by the first letter in the last name
Dim groupQuery = From name In mergeQuery
Let n = name.Split(New Char() {","})
Order By n(0)
Group By groupKey = n(0)(0)
Into groupName = Group
' Create a new file for each group that was created
' Note that nested foreach loops are required to access
' individual items with each group.
For Each gGroup In groupQuery
Dim fileName As String = "..'..'..'testFile_" & gGroup.groupKey & ".txt"
Dim sw As New System.IO.StreamWriter(fileName)
Console.WriteLine(gGroup.groupKey)
For Each item In gGroup.groupName
Console.WriteLine(" " & item.name)
sw.WriteLine(item.name)
Next
sw.Close()
Next
' Keep console window open in debug mode.
Console.WriteLine("Files have been written. Press any key to exit.")
Console.ReadKey()
End Sub
End Class
' Console Output:
' A
' Aw, Kam Foo
' B
' Bankov, Peter
' Beebe, Ann
' E
' El Yassir, Mehdi
' G
' Garcia, Hugo
' Garcia, Debra
' Giakoumakis, Leo
' Gilchrist, Beth
' Guy, Wey Yuan
' H
' Holm, Michael
' L
' Liu, Jinghao
' M
' McLin, Nkenge
' Myrcha, Jacek
' N
' Noriega, Fabricio
' P
' Potra, Cristina
' T
' Toyoshima, Tim
Das Programm schreibt eine separate Datei für jede Gruppe im gleichen Ordner wie die Datendateien.
Kompilieren des Codes
Erstellen Sie ein Visual Basic-Konsolenanwendungsprojekt mit einer Imports
-Anweisung für den System.Linq-Namespace.