方法: グループを使用してファイルを複数のファイルに分割する (LINQ) (Visual Basic)
この例では、2 つのファイルの内容をマージし、新しい方法でデータを整理する一連の新しいファイルを作成するための、1 つの方法を示します。
データ ファイルを作成するには
次の名前を names1.txt という名前のテキスト ファイルにコピーし、プロジェクト フォルダーに保存します。
Bankov, Peter Holm, Michael Garcia, Hugo Potra, Cristina Noriega, Fabricio Aw, Kam Foo Beebe, Ann Toyoshima, Tim Guy, Wey Yuan Garcia, Debra
次の名前を names2.txt という名前のテキスト ファイルにコピーし、プロジェクト フォルダーに保存します。2 つのファイルには、共通の名前がいくつか含まれていることに注意してください。
Liu, Jinghao Bankov, Peter Holm, Michael Garcia, Hugo Beebe, Ann Gilchrist, Beth Myrcha, Jacek Giakoumakis, Leo McLin, Nkenge El Yassir, Mehdi
例
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
このプログラムは、データ ファイルとしてグループごとに異なるファイルを同じフォルダーに書き込みます。
コードのコンパイル
System.Linq 名前空間の Imports
ステートメントを使用して、Visual Basic コンソール アプリケーション プロジェクトを作成します。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET