as per query by name or half of the name in the management list of c # console application?

0

So I'm creating a birthday management file, where I can add and consult people, but I'm having trouble making a person-by-name lookup code, however, by having the person appear 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");
    }

}

Thanks for the attention

    
asked by anonymous 26.12.2017 / 16:36

1 answer

1

You need to get the user's search term. For this you can use Console.ReadLine . Therefore:

var termo = Console.ReadLine();

This variable will save the term to be searched. To filter the list by the term, use 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 the first or last name). There you can print:

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

I do not know the types of properties, but anything you just adjust at the time of printing. These examples were to give you an idea how to do it.

    
26.12.2017 / 16:43