Sdílet prostřednictvím


Postupy: Změna pořadí polí v souboru s oddělovači (LINQ)

Hodnoty oddělené čárkami (CSV) soubor je textový soubor, který se často používá k ukládání dat tabulky nebo jiných tabulkových reprezentované řádků a sloupců.Pomocí Split metoda k oddělení polí, je velmi snadné dotazování a pracovat se soubory CSV pomocí LINQ. Ve skutečnosti stejné techniky lze změnit pořadí částí všech strukturovaných řádků textu; není omezeno na soubory CSV.

V následujícím příkladu předpokládejme, že tři sloupce představují studenty "Příjmení" "jméno" a "ID". Pole jsou v abecedním pořadí podle příjmení studenty.Dotaz vytvoří nové pořadí, ve kterém se sloupci ID zobrazí první, následuje druhý sloupec, který spojí křestní jméno a příjmení studenta.Řádky jsou nově uspořádat podle ID pole.Výsledky jsou uloženy do nového souboru a původní data nebyla změněna.

Vytvoření souboru dat

  • Vytvoření programu nové Visual C# nebo Visual Basic projektu a zkopírujte následující řádky do prostého textového souboru s názvem spreadsheet1.csv.Uložte soubor ve složce řešení.

    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
    

Příklad

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
class CSVFiles
{
    static void Main(string[] args)
    {
        // Create the IEnumerable data source 
        string[] lines = System.IO.File.ReadAllLines(@"../../../spreadsheet1.csv");

        // Create the query. Put field 2 first, then 
        // reverse and combine fields 0 and 1 from the old field
        IEnumerable<string> query =
            from line in lines
            let x = line.Split(',')
            orderby x[2]
            select x[2] + ", " + (x[1] + " " + x[0]);

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

        Console.WriteLine("Spreadsheet2.csv written to disk. Press any key to exit");
        Console.ReadKey();
    }
}
/* 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
 */

Probíhá kompilace kódu

  • Vytvoření Visual Studio projektu, který se zaměřuje .NET Framework verze 3.5.Ve výchozím nastavení projektu odkazuje na System.Core.dll a using směrnice (C#) nebo Imports prohlášení (Visual Basic) pro obor názvů System.Linq.V jazyce C# projekty, přidejte using směrnice pro obor názvů System.IO.

  • Zkopírujte tento kód do projektu.

  • Stisknutím klávesy F5 sestavit a spustit program.

  • Stisknutím libovolné klávesy uzavřete okno konzoly.

Viz také

Úkoly

How to: Generate XML from CSV Files

Koncepty

LINQ a řetězce

LINQ a souborové adresáře