Cara: Menyusun Ulang Bidang File yang Dipisahkan (LINQ) (Visual Basic)

File nilai yang dipisahkan koma (CSV) adalah file teks yang sering digunakan untuk menyimpan data lembar kerja atau data tabular lainnya yang diwakili oleh baris dan kolom. Dengan menggunakan metode Split untuk memisahkan bidang, sangat mudah untuk mengkueri dan memanipulasi file CSV dengan menggunakan LINQ. Bahkan, teknik yang sama dapat digunakan untuk menyusun ulang bagian-bagian dari baris teks terstruktur apa pun; tidak terbatas untuk file CSV.

Dalam contoh berikut, asumsikan bahwa tiga kolom mewakili “students” "last name," "first name", dan "ID." Bidang berada dalam urutan alfabet berdasarkan nama belakang siswa. Kueri menghasilkan urutan baru di mana kolom ID muncul terlebih dahulu, diikuti dengan kolom kedua yang menggabungkan nama depan dan nama belakang siswa. Baris disusun ulang sesuai dengan bidang ID. Hasilnya disimpan ke dalam file baru dan data asli tidak diubah.

Untuk membuat file data

  1. Salin baris berikut ke dalam file teks biasa yang diberi nama spreadsheet1.csv. Simpan file dalam folder proyek Anda.

    Adams,Terry,120
    Fakhouri,Fadi,116
    Feng,Hanying,117
    Garcia,Cesar,114
    Garcia,Debra,115
    Garcia,Hugo,118
    Mortensen,Sven,113
    O'Donnell,Claire,112
    Omelchenko,Svetlana,111
    Tucker,Lance,119
    Tucker,Michael,122
    Zabokritski,Eugene,121
    

Contoh

Class CSVFiles

    Shared Sub Main()

        ' Create the IEnumerable data source.
        Dim lines As String() = System.IO.File.ReadAllLines("../../../spreadsheet1.csv")

        ' Execute the query. Put field 2 first, then
        ' reverse and combine fields 0 and 1 from the old field
        Dim lineQuery = From line In lines
                        Let x = line.Split(New Char() {","})
                        Order By x(2)
                        Select x(2) & ", " & (x(1) & " " & x(0))

        ' Execute the query and write out the new file. Note that WriteAllLines
        ' takes a string array, so ToArray is called on the query.
        System.IO.File.WriteAllLines("../../../spreadsheet2.csv", lineQuery.ToArray())

        ' Keep console window open in debug mode.
        Console.WriteLine("Spreadsheet2.csv written to disk. Press any key to exit")
        Console.ReadKey()
    End Sub
End Class
' Output to spreadsheet2.csv:
' 111, Svetlana Omelchenko
' 112, Claire O'Donnell
' 113, Sven Mortensen
' 114, Cesar Garcia
' 115, Debra Garcia
' 116, Fadi Fakhouri
' 117, Hanying Feng
' 118, Hugo Garcia
' 119, Lance Tucker
' 120, Terry Adams
' 121, Eugene Zabokritski
' 122, Michael Tucker

Lihat juga