Если вам нужно пропустить (заголовок) строки и / или столбцы, вы можете использовать это для создания двумерного массива:
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 строки состоят из заголовка, а первый столбец - заголовок строки, который вам не нужен в массиве, потому что вы просто хотите просмотреть данные).
NB Вы можете легко получить заголовки и 1-й столбец, используя следующий код:
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 .