Linq To Csv

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.


Comments