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);
}