Ficha 02 · C# avançado
Exercício 1 · LINQ — filtros e projecções
Dado este array:
var pessoas = new List<(string Nome, int Idade, string Cidade)>
{
("Ana", 25, "Lisboa"),
("Bruno", 32, "Porto"),
("Carla", 19, "Lisboa"),
("Diana", 41, "Coimbra"),
("Eduardo", 28, "Porto")
};
Usando LINQ: 1. Quantas pessoas têm > 25 anos? 2. Imprime nomes ordenados alfabeticamente. 3. Qual a média de idade? 4. Quem mora em Lisboa ou Porto?
Resposta:
Exercício 2 · GroupBy
Continuando o exercício 1, agrupa as pessoas por cidade e mostra para cada cidade: quantas pessoas e a média de idade.
Resposta:
Exercício 3 · Ler ficheiro CSV
Cria um ficheiro produtos.csv com este conteúdo:
nome,preco,stock
Caneta,1.50,100
Caderno,5.00,50
Mochila,35.00,20
Estojo,8.00,30
Cria uma classe Produto (record) e lê o ficheiro para uma List<Produto>. Depois imprime apenas produtos com stock < 30.
Resposta:
Exercício 4 · Escrever JSON
Cria 3 instâncias de Aluno(string Nome, double Nota) e guarda-as no ficheiro alunos.json (formato indented). Depois lê o ficheiro de volta e imprime.
Resposta:
Exercício 5 · Try-catch e excepção custom
Cria IdadeInvalidaException : Exception e usa-a num método ValidarIdade(int idade) que lança a excepção se idade < 0 ou > 150. Demonstra try-catch com 3 casos (válido, negativo, maior que 150).
Resposta:
Exercício 6 · EF Core — setup
Cria um projecto novo e adiciona EF Core SQLite. Define Tarefa (id, descricao, feita) e AppDbContext. Cria as migrations e a BD.
Resposta:
Exercício 7 · EF Core — CRUD
Usando o setup do exercício 6, implementa as 4 operações no Main:
- Inserir 3 tarefas.
- Listar todas.
- Marcar a primeira como feita.
- Apagar a última.
Resposta:
Exercício 8 · Testes com xUnit
Cria a classe Calculadora com Somar, Subtrair, Multiplicar, Dividir (lança DivideByZeroException se divisor 0). Cria projecto xUnit e escreve 5 testes (inclui [Theory] para casos múltiplos).
Resposta: