Se você precisar pular linhas e / ou colunas (de cabeça), poderá usá-lo para criar uma matriz bidimensional:
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
Isso é bastante útil se você precisar moldar os dados antes de processá-los ainda mais (supondo que as duas primeiras linhas consistam no título e a primeira coluna seja um título de linha - que você não precisa ter na matriz porque apenas quer considerar os dados).
NB Você pode facilmente obter as manchetes e a 1ª coluna usando o seguinte código:
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
Este exemplo de código assume a seguinte estrutura do seu *.csv
arquivo:
Nota: Se você precisar pular linhas vazias - o que pode ser útil algumas vezes, você pode fazê-lo inserindo
where line.Any(a=>!string.IsNullOrWhiteSpace(a))
entre a from
ea select
declaração nos LINQ exemplos de código acima.
";"
como separador ... isso fez CSV um não-padrão imo :(