Gör så här: Ändra ordning på fälten i en avgränsad fil (LINQ) (Visual Basic)
En CSV-fil (kommaavgränsat värde) är en textfil som ofta används för att lagra kalkylbladsdata eller andra tabelldata som representeras av rader och kolumner. Genom att använda Split metoden för att separera fälten är det mycket enkelt att fråga efter och manipulera CSV-filer med hjälp av LINQ. I själva verket kan samma teknik användas för att ordna om delarna i en strukturerad textrad. det är inte begränsat till CSV-filer.
I följande exempel antar du att de tre kolumnerna representerar elevernas "efternamn", "förnamn" och "ID". Fälten är i alfabetisk ordning baserat på elevernas efternamn. Frågan skapar en ny sekvens där ID-kolumnen visas först, följt av en andra kolumn som kombinerar elevens förnamn och efternamn. Raderna sorteras om enligt ID-fältet. Resultatet sparas i en ny fil och de ursprungliga data ändras inte.
Så här skapar du datafilen
Kopiera följande rader till en oformaterad textfil med namnet spreadsheet1.csv. Spara filen i projektmappen.
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
Exempel
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