C#:
Trabalhando com CSV

Como fazer:

Trabalhar com arquivos CSV em C# pode ser realizado através do namespace System.IO para operações básicas, e para manipulações mais complexas ou para lidar com arquivos maiores de forma fluente, pode-se considerar bibliotecas de terceiros como CsvHelper. Abaixo estão exemplos de como ler e escrever em arquivos CSV usando ambas as abordagens.

Lendo um arquivo CSV usando System.IO

using System;
using System.IO;

class ReadCSV
{
    static void Main()
    {
        string filePath = @"caminho\para\seu\arquivo.csv";
        // Lendo todas as linhas do arquivo CSV
        string[] csvLines = File.ReadAllLines(filePath);
        
        foreach (string line in csvLines)
        {
            string[] rowData = line.Split(',');
            Console.WriteLine($"Primeira Coluna: {rowData[0]}, Segunda Coluna: {rowData[1]}");
        }
    }
}

Saída do exemplo:

Primeira Coluna: Nome, Segunda Coluna: Idade
Primeira Coluna: John Doe, Segunda Coluna: 30

Escrevendo em um arquivo CSV usando System.IO

using System;
using System.Collections.Generic;
using System.IO;

class WriteCSV
{
    static void Main()
    {
        string filePath = @"caminho\para\seu\saida.csv";
        var lines = new List<string>
        {
            "Nome,Idade",
            "John Doe,30",
            "Jane Smith,25"
        };
        
        File.WriteAllLines(filePath, lines);
        Console.WriteLine("Arquivo CSV escrito.");
    }
}

Saída do exemplo:

Arquivo CSV escrito.

Usando CsvHelper para Ler CSV

Para usar CsvHelper, primeiro, adicione o pacote CsvHelper ao seu projeto usando o NuGet Package Manager.

using CsvHelper;
using System.Globalization;
using System.IO;
using System.Linq;
using CsvHelper.Configuration;

class ReadCSVWithCsvHelper
{
    static void Main()
    {
        string filePath = @"caminho\para\seu\arquivo.csv";

        using (var reader = new StreamReader(filePath))
        using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            var records = csv.GetRecords<dynamic>().ToList();
            foreach (var record in records)
            {
                Console.WriteLine($"Primeira Coluna: {record.Name}, Segunda Coluna: {record.Age}");
            }
        }
    }
}

Saída do exemplo:

Primeira Coluna: John Doe, Segunda Coluna: 30
Primeira Coluna: Jane Smith, Segunda Coluna: 25

Usando CsvHelper para Escrever CSV

using CsvHelper;
using System.Globalization;
using System.IO;
using System.Collections.Generic;
using CsvHelper.Configuration;

class WriteCSVWithCsvHelper
{
    public class Pessoa
    {
        public string Nome { get; set; }
        public int Idade { get; set; }
    }

    static void Main()
    {
        string filePath = @"caminho\para\seu\saida.csv";
        var registros = new List<Pessoa>
        {
            new Pessoa { Nome = "John Doe", Idade = 30 },
            new Pessoa { Nome = "Jane Smith", Idade = 25 }
        };

        using (var writer = new StreamWriter(filePath))
        using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
        {
            csv.WriteRecords(registros);
        }
        
        Console.WriteLine("Arquivo CSV escrito com CsvHelper.");
    }
}

Saída do exemplo:

Arquivo CSV escrito com CsvHelper.