1
resposta

[Projeto] Desafio 3 ao 5 Serialização, Desserialização e Filtro por idade

Foi criado a classe Models/Pessoa e Filtros/LinqFilter

Pessoa


namespace ListaPessoaDados.Models
{
    internal class Pessoa
    {
        public Pessoa(string nome, int idade, string email)
        {
            Nome = nome;    
            Idade = idade;
            Email = email;
        }
        public string Nome { get; set; }
        public int Idade { get; set; }
        public string Email { get; set; }
    }
}

LinqFilter

using ListaPessoaDados.Models;
using System.Linq;
using System.Text.Json;

namespace ListaPessoaDados.Filtros
{
    internal class LinqFilter
    {
        public static void GravarDados(List<Pessoa> pessoas, string filename)
        {
            try
            {
                var dados = JsonSerializer.Serialize(pessoas);
                File.WriteAllText(filename, dados);
                Console.WriteLine($"Dados Gravado com sucesso! {Path.GetFullPath(filename)}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Erro: "+ ex.ToString());
            }
        }

        public static void LerDados(string filename)
        {
            try
            {
                var dados = File.ReadAllText(filename);
                var contatos = JsonSerializer.Deserialize<List<Pessoa>>(dados);

                Console.WriteLine("Lista de Pessoas");
                foreach (var contato in contatos)
                {
                    Console.WriteLine($"Nome: {contato.Nome}");
                    Console.WriteLine($"Idade: {contato.Idade}");
                    Console.WriteLine($"Email: {contato.Email}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Erro: {ex.Message}");
            }
        }

        public static void FiltrarPorIdade(string filename ,int idade)
        {
            try
            {
                var dados = File.ReadAllText(filename);
                var contatos = JsonSerializer.Deserialize<List<Pessoa>>(dados)!.Where(c => c.Idade == idade).ToList();

                Console.WriteLine("Filtro por idade");
                foreach (var contato in contatos)
                {
                    Console.WriteLine($"Nome:{contato.Nome}");
                    Console.WriteLine($"Idade:{contato.Idade}");
                    Console.WriteLine($"Email:{contato.Email}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erro:" + ex.Message);
            }
        }
    }
}

Program.cs

using ListaPessoaDados.Filtros;
using ListaPessoaDados.Models;

List<Pessoa> pessoas = new List<Pessoa>()
{
    new Pessoa("Leandro Pereira", 34, "leandrosp991@gmail.com"),
    new Pessoa("Will Smith", 50, "will.mal@gmail.com"),
    new Pessoa("Joao Damasceno" , 30 , "joao.d@gmail.com")
};

string filename = "pessoas.json";
Console.WriteLine("Digite a idade pra filtrar:");
int idade = int.Parse(Console.ReadLine()!);

if (File.Exists(filename))
{
    LinqFilter.LerDados(filename);
    LinqFilter.FiltrarPorIdade(filename, idade);
}
else
{
    LinqFilter.GravarDados(pessoas, filename);
}
1 resposta

Olá, Leandro! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para estruturar os dados, utilizou muito bem o JsonSerializer para gravar e ler informações em arquivo e ainda compreendeu a importância do LINQ para aplicar filtros de forma prática e eficiente.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!