Tập tin (CSV) là tập tin văn bản chứa các giá trị ngăn cách nhau bằng dấu phẩy, thường được sử dụng để lưu trữ dữ liệu hoặc các dữ liệu ngăn cách nhau bằng Tab thể hiển dòng hay cột. Bằng cách dùng phương thức Split để tách các trường dữ liệu, việc truy vấn và thực thi tập tin CSV bằng LINQ rất đơn giản. Thật vậy, cùng kỹ thuật này có thể sắp xếp các phần của bất kỳ tập tin văn bản có cấu trúc nào, không riêng gì các tập tin CSV. Nếu bạn chuyển tập tin Excel (.xls) thành csv, bạn cũng có thể dùng cách này để sắp xếp trường dữ liệu.
Trong ví dụ sau, có 3 cột thể hiện thông tin của 1 danh sách sinh viên như Last Name, First Name và ID. Nhiệm vụ cần thực hiện là sắp xếp danh sách này theo thứ tự ID tăng dần và trộn giá trị cột Last Name và First Name với nhau.
Đầu tiên, chúng ta phải có tập tin CSV, để tạo tập tin này, bạn copy đoạn sau vào Notepad và lưu tập tin với tên dammio.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
Sau đó tạo 1 dự án Console C# và thực thi đoạn mã sau:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LINQ { class Program { static void Main(string[] args) { // Tạo nguồn dữ liệu IEnumerable --- dammio.com // Tập tin dammio.csv nằm ở thư mục Debug của dự án string[] lines = System.IO.File.ReadAllLines(@"dammio.csv"); // Tạo truy vấn. Đặt trường số 2 (ID) đầu tiên, sau đó // sắp xếp tăng dần và trộn trường số 0 (Last Name) và 1 (First Name) với nhau IEnumerable<string> query = from line in lines let x = line.Split(',') orderby x[2] select x[2] + ", " + (x[1] + " " + x[0]); // Thực thi truy vấn và viết nội dung vào tập tin dammio.csv. Lưu ý WriteAllLines // sẽ lấy 1 mảng string[], vì vậy ToArray được gọi trên truy vấn. System.IO.File.WriteAllLines(@"dammio.csv", query.ToArray()); Console.WriteLine("dammio.csv da duoc ghi vao dia. Nhan bat ky phim nao de thoat!"); Console.ReadKey(); } /* Kết quả 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 */ } }
OK vậy là xong, bạn chỉ cần nhấn F5 thực thi dự án và tập tin kết quả dammio.csv nằm ở thư mục Debug của dự án, bạn có thể thấy dữ liệu trong tập tin này đã được sắp xếp.
- APA:
Dammio. (2017). [LINQ và chuỗi] Phần 7: Cách sắp xếp các trường của 1 tập tin dạng CSV bằng LINQ. https://www.dammio.com/2017/06/26/linq-va-chuoi-phan-7-cach-sap-xep-cac-truong-cua-1-tap-tin-dang-csv-bang-linq.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {[LINQ và chuỗi] Phần 7: Cách sắp xếp các trường của 1 tập tin dạng CSV bằng LINQ},
year = {2017},
url = {https://www.dammio.com/2017/06/26/linq-va-chuoi-phan-7-cach-sap-xep-cac-truong-cua-1-tap-tin-dang-csv-bang-linq},
urldate = {2024-12-06}
}