次の方法で共有


方法: 区切りファイルのフィールドを並べ替える (LINQ) (Visual Basic)

コンマ区切り値 (CSV) ファイルは、スプレッドシート データや、行と列で表されるその他の表形式データを格納するためによく使用されるテキスト ファイルです。 Splitメソッドを使用してフィールドを分離することで、LINQ を使用して CSV ファイルのクエリと操作を非常に簡単に行うことができます。 実際には、同じ手法を使用して、構造化されたテキスト行の部分を並べ替えることができます。CSV ファイルに限定されません。

次の例では、3 つの列が学生の "姓"、"名"、"ID" を表しているとします。フィールドは、学生の姓に基づくアルファベット順です。 このクエリでは、ID 列が最初に表示され、次に学生の名と姓を組み合わせた 2 番目の列が表示される新しいシーケンスが生成されます。 行は ID フィールドに従って並べ替えされます。 結果は新しいファイルに保存され、元のデータは変更されません。

データ ファイルを作成するには

  1. 次の行を、spreadsheet1.csvという名前のプレーン テキスト ファイルにコピーします。 プロジェクト フォルダーにファイルを保存します。

    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
    

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

こちらも参照ください