how to refer by name or half of the name in the birthday management list c# console application?

Asked

Viewed 439 times

0

So I’m creating a birthday management file, where I can add and query people, but I’m having a hard time making a code to query person by name, but doing with what appears to the person and choose to view it:

public class Metodos
{
    #region

    //Método de inserção de uma nova pessoa na lista
    public static void InserirPessoaLista(List<Lista> _listAniversario, Lista lista)
    {
        //recuperando lista que foi passada como parametro
        List<Lista> _list = _listAniversario;

        //Adiconando nova pessoa à lista
        _list.Add(lista);

        Metodos.ConsultarLista(_list);

        //Carregando menu principal
        Metodos.CarregarMenuPrincipal();

        //Guarda o valor digitado pelo usuario
        string _menu = Console.ReadLine().ToString();

        //Realiza ação de acorodo com a opção escolhida pelo usuario
        Metodos.MenuOpcoes(_listAniversario, _menu);
    }

    //Visualizar lista
    public static void ConsultarLista(List<Lista> _listAniversario)
    {
        Console.WriteLine();
        Console.WriteLine("Dados das Pessoas:");

        for (int i = 0; i < _listAniversario.Count; i++)
        {

            Console.WriteLine("Nome Completo: {1} {2}\n" +
                "Data de Aniversário: {3} \n" +
                "Faltam {4} dias para esse aniversário \n",
            i,
            _listAniversario[i].Nome,
            _listAniversario[i].Sobrenome,
            _listAniversario[i].DataNascimento,
            _listAniversario[i].Idade);
        }

        //Carregando menu principal
        Metodos.CarregarMenuPrincipal();

        //Recuperando menu digitado pela pessoa
        string _menu = Console.ReadLine().ToString();

        //Carregando menu correspodente
        Metodos.MenuOpcoes(_listAniversario, _menu);
    }

    #endregion

    //Método que monta menu para o usuario
    public static void MenuOpcoes(List<Lista> _listAniversario, string _menu)
    {
        switch (_menu)
        {
            case "1":
                Console.WriteLine("Digite o nome da pessoa.");
                string _nome = Console.ReadLine();
                Console.WriteLine();
                Console.WriteLine("Digite o sobrenome da pessoa.");
                string _sobrenome = Console.ReadLine();
                Console.WriteLine();
                Console.WriteLine("Digite a data de nascimento da pessoa.");
                DateTime _dataNascimento = DateTime.Parse(Console.ReadLine());
                Console.WriteLine();
                Console.WriteLine("Pessoa inserida com sucesso");

                Metodos.InserirPessoaLista(_listAniversario, new Lista(_nome, _sobrenome, _dataNascimento));

                break;

            case "2":
                //Visualizando lista

                Metodos.ConsultarLista(_listAniversario);
                (aqui que quero consultar por nome ou metade do nome)
                break;

            case "3":
                Console.WriteLine("Saindo...");
                break;

            default:
                Console.WriteLine("Operação Inválida!");

                break;


        }
    }

    //Carregar MenuPrincipal
    public static void CarregarMenuPrincipal()
    {
        Console.WriteLine("Gerenciamento de Aniversario");
        Console.WriteLine();
        Console.WriteLine("Escolha a operação a ser realizada\n" +
                          "1 - Inserir pessoa \n" +
                          "2 - Consultar lista\n" +
                          "3 - Fechar aplicão");
    }

}

Thank you for your attention

1 answer

1


You need to get the term to be searched by the user. For this you can use the Console.ReadLine. Therefore:

var termo = Console.ReadLine();

This variable will save the term to be searched for. To filter the list by the term, use the Where. To use it you need to import the namespace System.Linq.

var resultados = _listAniversario.Where(f => f.Nome.Contains(termo) || f.Sobrenome.Contains(termo));

This will return a collection of items that satisfy the condition (term contains part of name or surname). Here you can print:

foreach (var item in resultados) {
  Console.WriteLine($"{item.Nome} {item.Sobrenome} / {item.DataNascimento} / {item.Idade}");
}

I don’t know the types of properties, but anything you just adjust when printing. These examples were to give you an idea of how to do.

  • thank you very much helped me too

Browser other questions tagged

You are not signed in. Login or sign up in order to post.