Nếu bạn cần bỏ qua (head-) dòng và / hoặc cột, bạn có thể sử dụng điều này để tạo mảng 2 chiều:
var lines = File.ReadAllLines(path).Select(a => a.Split(';'));
var csv = (from line in lines
select (from col in line
select col).Skip(1).ToArray() // skip the first column
).Skip(2).ToArray(); // skip 2 headlines
Điều này khá hữu ích nếu bạn cần định hình dữ liệu trước khi xử lý thêm (giả sử 2 dòng đầu tiên bao gồm tiêu đề và cột đầu tiên là tiêu đề hàng - mà bạn không cần phải có trong mảng vì bạn chỉ cần muốn liên quan đến dữ liệu).
NB Bạn có thể dễ dàng lấy các tiêu đề và cột thứ 1 bằng cách sử dụng mã sau:
var coltitle = (from line in lines
select line.Skip(1).ToArray() // skip 1st column
).Skip(1).Take(1).FirstOrDefault().ToArray(); // take the 2nd row
var rowtitle = (from line in lines select line[0] // take 1st column
).Skip(2).ToArray(); // skip 2 headlines
Ví dụ mã này giả định cấu trúc sau của *.csv
tệp của bạn :
Lưu ý: Nếu bạn cần bỏ qua các hàng trống - đôi khi có thể tiện dụng, bạn có thể làm như vậy bằng cách chèn
where line.Any(a=>!string.IsNullOrWhiteSpace(a))
giữa from
và select
câu lệnh trong các ví dụ mã LINQ ở trên.
";"
như tách ... này đã làm cho CSV một phi tiêu chuẩn imo :(