Non so da quanto tempo esista, ma è ormai almeno un mese che lo sto utilizzando in un progetto e devo dire che è veramente comodo e ben fatto.
L’idea di potersi avvalere di Linq per effettuare query e manipolazioni di dati su diversi repository, che siano questi database, CSV o oggetti in memoria, è a dir poco fantastica.
L’utilizzo è semplicissimo, basta decorare con gli appositi attributi la classe, specificare come si vuole utilizzare il CSV, se in scrittura o in lettura, e, in quest’ultimo caso, è possibile eseguire la query Linq.
Lo Snippet seguente mostra un’implementazione in lettura.
CsvFileDescription inputFileDescription = new CsvFileDescription
{
SeparatorChar = ';',
FirstLineHasColumnNames = true,
FileCultureName = "it-It"
};
CsvContext cc = new CsvContext();
IEnumerable<PersonCSV> CsvPeople = cc.Read<PersonCSV>(@"C:\Temp\mytestFile.csv", inputFileDescription);
foreach (PersonCSV p in CsvPeople)
{
//TO DO SOMETHING
}
public class PersonCSV
{
[CsvColumn(Name = "Nome", FieldIndex = 1, CanBeNull = false)]
public string FirstName { get; set; }
[CsvColumn(Name = "Cognome", FieldIndex = 2, CanBeNull = false)]
public string LastName { get; set; }
[CsvColumn(Name = "NickName", FieldIndex = 3, CanBeNull=true)]
public string Nickname { get; set; }
}
Ulteriori informazioni le trovate qui.