none
Ajuda com uma lista em c# RRS feed

  • Pergunta

  • boa noite a todos!

    Estou enfrentando algumas dificuldades no C# referente a lista, meu cenario e o seguinte:

    tenho duas lista:

    listaReserva

    ListaAcomodacaoDisponivel

    A "listaReserva" tem atributo  em comum a "listaAcomodacao" ambas lista estao populada, agora preciso jogar os dados da lista ListaAcomodacao na listaReserva, mas nao pode repetir informaçao, é o que esta acontecendo neste codigo abaixo. so pega o mesma informacao.

    public void CarregaListaReserva()
            {
                var listaReserva = GetListaReservas(); 
                var listaAcomodacaoDisponivel = BuscaListaAcomodacoesDisponivel();   // carrega dados do banco       
                List<Reserva> novalistaReserva = new List<Reserva>(); 
    
    
                foreach (Reserva itemReserva in listaReserva)
                {               
                    foreach (Acomodacao itemDisponivel in listaAcomodacaoDisponivel)
                    {                   
                       itemReserva.Acomodacao = itemDisponivel;                  
    
                    }
                    novalistaReserva.Add(itemReserva);
                }
                // aki e teste pra confeir se de fato  cada reserva recebeu sua acomodacao
                foreach (Reserva item in novalistaReserva)
                {
                    MessageBox.Show("teste do nova lista de reserva");
                    MessageBox.Show(Convert.ToString("Data Reserva" + item.DataReserva));
                    MessageBox.Show(Convert.ToString("QtdReserva" + item.QtdReserva));
                    MessageBox.Show(Convert.ToString("Codigo Acomodacao" + item.Acomodacao.CodAcomodacao));
                    MessageBox.Show(Convert.ToString("Valor Diaria" + item.Acomodacao.ValorDiaria));         
                }
             }
                               
                      
                    
        
                   
    

    Teoriacamente eu queria algo neste sentido:

    Que minha ListaReserva.Acomodacao  que tem  n  quantidade de reservas, receba uma acomodacao por reserva. Mas todas a reservas ganha a mesma acomodacao.. Olha agradeço a quem poder me enteder e ajudar.. 

    quarta-feira, 16 de outubro de 2013 22:14

Todas as Respostas

  • Boa noite,

    pelo que entendi, você precisará de algo do tipo :

    foreach (Acomodacao local in listaAcomodacao)
                {
                    if(!listaReserva.Contains(local))
                        listaReserva.Add(local);
                }

    Desse jeito ele vai percorrer cada valor da primeira lista e comparar com todos da segunda, se não tiver ele adiciona.


    quinta-feira, 17 de outubro de 2013 01:11
  • Boa noite, Primeiro agradeço pela atençao, mas se vc observa meu codigo vai ver que ambas lista sao diferentes, onde imposibilita eu fazer o que vc citou acima, correto ? Ate confesso que tentei isto, mas logo descobri que  pelo fato de ser listas  diferentes entao nao consigo adiconar porque minha lista reserva tem algo em comum com a lista Acomodacao mas nao sao a mesma.

     Minhas listas estao assim:

    public List<Acomodacao> BuscaListaAcomodacoesDisponivel()  {
      var lista = new Acomodacao().ListarAcomodacoes(); //aqui eu busco no banco de dados todas as lista que esta liberada 
      List<Acomodacao> listaLiberado = new List<Acomodacao>();
    
                foreach (Acomodacao novoItem in lista)
                {
                    if (novoItem.Situacao.Equals("Liberado"))
                    {
                        listaLiberado.Add(novoItem);
                    }
                    
                }
                return listaLiberado; 
            }
    
    public List<Reserva> CarregaListaReservas()
     {
       var listaReserva = GetListaReservas(); //aqui tenho 4 reservas esperando 4 acomodacoes diferentes ou seja 4  apartamentos diferentes
       var listaAcomodacaoDisponivel = BuscaListaAcomodacoesDisponivel();             List<Reserva> novalistaReserva = new List<Reserva>(); 
    
      foreach (Reserva itemReserva in listaReserva)
       { 
         foreach (Acomodacao itemDisponivel in  listaAcomodacao)
         {                    
            itemReserva.Acomodacao =   itemDisponivel; // aqui a lista reserva.acomodacao tem algo em comum com a lista Acomodacao                 }
                    itemReserva.Acomodacao.Situacao = "Pendente"; // aqui coloca o estado dela de pendente para sair da lista de liberado
                    itemReserva.ValorReserva = itemReserva.Acomodacao.ValorDiaria * itemReserva.QtdPessoaReserva * itemReserva.QtdDiaria;
                    itemReserva.TotalReserva = itemReserva.ValorReserva * itemReserva.QtdReserva;
                    novalistaReserva.Add(itemReserva);
                }          
                return novalistaReserva;
            }      

    MInha intençao teoricamente seria assim:

    ListaReserva quantas reservas vc tem ? 4, blz. entao pega 4 Apartamento da minha listaAcomodacaoDisponivel, Olha listaReserva  so qeu tem uma codicao, para cada reserva vc tem que pegar um apartamento diferente e dizer que ele esta ocupado.. Veja se voce  consegue me entender melhor..  

     

    sexta-feira, 18 de outubro de 2013 00:39