Aracılığıyla paylaş


Nasıl yapılır: sınırlandırılmış dosyaya (LINQ) alanları yeniden düzenlemek

Virgülle ayrılmış değerler (csv) dosyası, elektronik tablo verilerini veya satırlar ve sütunlar tarafından temsil edilen diğer sekmeli veri depolamak için kullanılan bir metin dosyasıdır.Kullanarak Split alanları ayırmak için yöntemi kullanarak csv dosyaları yönetmek ve sorgulamak çok kolay LINQ. Aslında, aynı tekniği, yapılandırılmış herhangi bir satırlık metin parçalarını yeniden sıralamak için kullanılabilir; csv dosyaları sınırlı değildir.

Aşağıdaki örnekte, üç sütun öğrenciler "Soyadı" temsil varsayalım "ilk ad" ve "Kimliği" Öğrenciler soyadlarını göre alfabetik sırada alanlardır.Sorgu ID sütunu Öğrenci first name ve last name bir araya getiren ikinci bir sütun tarafından izlenen ilk, görüntülendiği yeni bir sıra oluşturur.Satırları kimliği alanına göre sıralanarak içindekilerden.Sonuçları yeni bir dosyaya kaydedilir ve özgün veriler değiştirilmez.

Veri dosyasını oluşturmak için

  • Bir yeni Visual C# oluşturmak veya Visual Basic proje ve spreadsheet1.csv adlı bir düz metin dosyasına aşağıdaki satırları kopyalayın.Çözüm klasörünüzdeki dosyayı 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
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
 */

Kod Derleniyor

  • Oluşturma bir Visual Studio hedefleyen proje .NET Framework sürüm 3.5.Varsayılan olarak, proje başvuru System.Core.dll sahiptir ve bir using yönergesi (C#) veya Imports deyimi (Visual Basic) System.Linq ad alanı.C# projeleri, ekleme bir using yönergesi System.IO ad alanı.

  • Projenize bu kodu kopyalayın.

  • Derlemek ve program çalıştırmak için F5 tuşuna basın.

  • Konsol penceresine çıkmak için herhangi bir tuşa basın.

Ayrıca bkz.

Görevler

How to: Generate XML from CSV Files

Kavramlar

LINQ ve dizeleri

LINQ ve dosya dizinleri