Якщо вам потрібно пропустити (заголовки) рядки та / або стовпці, ви можете використовувати це для створення двовимірного масиву:
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
Це дуже корисно, якщо вам потрібно сформувати дані, перш ніж опрацювати їх (якщо припустити, що перші 2 рядки складаються з заголовка, а перший стовпець - це заголовок рядка - якого вам не потрібно мати в масиві, оскільки ви просто хочу врахувати дані).
Примітка. Ви можете легко отримати заголовки та перший стовпець, скориставшись таким кодом:
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
Цей приклад коду передбачає таку структуру вашого *.csv
файлу:
Примітка. Якщо вам потрібно пропустити порожні рядки - що зручно іноді, ви можете зробити це, вставивши
where line.Any(a=>!string.IsNullOrWhiteSpace(a))
між from
і select
оператором у наведених вище прикладах коду LINQ .
";"
як роздільник ... це зробило CSV нестандартним imo :(