Aracılığıyla paylaş


Nasıl yapılır: Sınırlandırılmış Dosyanın Alanlarını Yeniden Sıralama (LINQ) (Visual Basic)

Virgülle ayrılmış değer (CSV) dosyası, genellikle elektronik tablo verilerini veya satırlar ve sütunlar tarafından temsil edilen diğer tablosal verileri depolamak için kullanılan bir metin dosyasıdır. alanları ayırmak için yöntemini kullanarak Split , LINQ kullanarak CSV dosyalarını sorgulamak ve işlemek çok kolaydır. Aslında, aynı teknik herhangi bir yapılandırılmış metin satırının bölümlerini yeniden sıralamak için kullanılabilir; CSV dosyalarıyla sınırlı değildir.

Aşağıdaki örnekte, üç sütunun öğrencilerin "soyadı", "ad" ve "Kimlik" sütunlarını temsil ettiğini varsayalım. Alanlar, öğrencilerin soyadlarına göre alfabetik sıradadır. Sorgu, kimlik sütununun ilk sırada göründüğü yeni bir sıra oluşturur ve ardından öğrencinin adını ve soyadını birleştiren ikinci bir sütun oluşturur. Satırlar, kimlik alanına göre yeniden sıralanır. Sonuçlar yeni bir dosyaya kaydedilir ve özgün veriler değiştirilmez.

Veri dosyasını oluşturmak için

  1. Aşağıdaki satırları spreadsheet1.csvadlı düz metin dosyasına kopyalayın. Dosyayı proje klasörünüzde kaydedin.

    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
    

Örnek

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

Ayrıca bakınız