none
Fazer uma seleção de dados utilizando o Entity Framework RRS feed

  • Pergunta

  • Bom dia estou querendo fazer uma seleção de dados utilizando o Entity Framework.

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                //Classificar as solicitações por PENDENTES, ATIVAS, EM HOMOLOGAÇÃO E FINALIZADAS
    
                switch (cmbClassificacao.Text)
                {
                    case "Pendentes..:":
                        solicitacao.Status_Id = 1;
                        break;
                    case "Aguardando Homologação..:":
                        solicitacao.Status_Id = 2;
                        break;
                    case "Em Homologação..:":
                        solicitacao.Status_Id = 3;
                        break;
                    case "Finalizadas..:":
                        solicitacao.Status_Id = 4;
                        break;
                }
    
                grdSolicitacoes.Rows.Clear();
                foreach (Solicitaco x in SolicitacaoDAO.ObterSolicitacaoPorStatus(solicitacao))
                {
                    grdSolicitacoes.Rows.Add(x.Id, x.Anexo, x.Assunto, x.Descricao, x.Status_Id, x.Usuario_Id, x.OrigemSolicitacao, x.Departamento_Id, x.DataSolicitacao);
                }
    

    public static IOrderedEnumerable<Solicitaco> ObterSolicitacaoPorStatus(Solicitaco solicitacao)
            {
                SGCTBDEntities ctx = new SGCTBDEntities();
    
                try
                {
                    IOrderedEnumerable<Solicitaco> Solicitacoes = ctx.Solicitacoes.ToList().OrderBy(x => x.Status_Id.Equals(x.Status_Id));
                    return Solicitacoes;
                }
                catch
                {
                    return null;
                }
            }
    
    Está retornando todas as solicitações, e não só as desejadas, gostaria de ajuda para resolver o problema...<br/><br/>
    

    segunda-feira, 16 de janeiro de 2012 11:14

Respostas

  • Alisson,

    Há alguma característica da sua rotina que necessite a implementação do método "ObterSolicitacaoPorStatus" com o tipo de retorno "IOrderedEnumerable<Solicitacao>" ?

    Você poderia retornar uma lista de objetos da classe "Solicitacao". 

    Veja se essa solução atende:

     

            public static List<Solicitacao> ObterSolicitacaoPorStatus(Solicitacao solicitacao)
            {
                SGCTBDEntities ctx = new SGCTBDEntities();
    
                try
                {
                    return ctx.Solicitacoes.Where(x => x.Status_Id == solicitacao.Status_Id).OrderBy(x => x.Status_Id).ToList();
                }
                catch
                {
                    return null;
                }
            }
    

     

    Abraços!

    quinta-feira, 19 de janeiro de 2012 20:06
  • Obrigado você ajudou muito o código ficou o seguinte

    public static List<Solicitaco> ObterSolicitacaoPorStatus(Solicitaco solicitacao)
            {
                SGCTBDEntities ctx = new SGCTBDEntities();
    
                try
                {
                    List<Solicitaco> Solicitacoes = ctx.Solicitacoes.Where(x => x.Status_Id == solicitacao.Status_Id).OrderBy(x => x.Status_Id).ToList();
                    return Solicitacoes;
                }
                catch
                {
                    return null;
                }
            }
    

    Estou retornando o objeto solicitacao, para ser apresentado em um DataGridView....

    foreach (Solicitaco x in SolicitacaoDAO.ObterSolicitacaoPorStatus(solicitacao))
                {
                    grdSolicitacoes.Rows.Add(x.Id, x.Anexo, x.Assunto, x.Descricao, x.Status_Id, x.Usuario_Id, x.OrigemSolicitacao, x.Departamento_Id, x.DataSolicitacao);
                }
    

    Vlw...

    sexta-feira, 20 de janeiro de 2012 11:19

Todas as Respostas

  • Amigo, na sua consulta em lambda, você está usando o método de ordenação OrderBy, tente substituir ou acrescentar o de filtro Where
    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Se for útil marque como resposta e faça um Developer feliz :)
    segunda-feira, 16 de janeiro de 2012 11:38
  • Tem um exemplo?

    segunda-feira, 16 de janeiro de 2012 12:03
  • Bom dia:

     IOrderedEnumerable<Solicitaco> Solicitacoes = ctx.Solicitacoes.ToList().Where(x => x.Status_Id.Equals(x.Status_Id));



    Consultoria Dot .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    segunda-feira, 16 de janeiro de 2012 12:19
  • Reclama da conversão de System.Collections.Generic.IEnumerable<SGCT.Solicitaco> to System.Linq.IOrderedEnumerable<SGCT.Solicitaco>

    segunda-feira, 16 de janeiro de 2012 12:47
  • Segue outro exemplo, que estou usando aqui agora:

    No meu repositorio:

            public IQueryable<Item> RetornaListagemEnviadosItensPorUsuarioEmAberto(string usuario, int status)
            {
                return _modeloContainer.Itens.Where(
                    u => u.ColaboradorOrigem == usuario 
                        && 
                    u.Status == status);
            }


    A chamada:

    var item = from c in _repositorio.RetornaListagemEnviadosItensPorUsuarioEmAberto(parametros)



    Consultoria Dot .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    segunda-feira, 16 de janeiro de 2012 12:53
  • Segue outro exemplo, que estou usando aqui agora:

    No meu repositorio:

     

            public IQueryable<Item> RetornaListagemEnviadosItensPorUsuarioEmAberto(string usuario, int status)
            {
                return _modeloContainer.Itens.Where(
                    u => u.ColaboradorOrigem == usuario 
                        && 
                    u.Status == status);
            }

     


    A chamada:

     

    var item = from c in _repositorio.RetornaListagemEnviadosItensPorUsuarioEmAberto(parametros)


     


    Consultoria Dot .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.


    Não está dando certo

     

    quinta-feira, 19 de janeiro de 2012 19:43
  • Alisson,

    Há alguma característica da sua rotina que necessite a implementação do método "ObterSolicitacaoPorStatus" com o tipo de retorno "IOrderedEnumerable<Solicitacao>" ?

    Você poderia retornar uma lista de objetos da classe "Solicitacao". 

    Veja se essa solução atende:

     

            public static List<Solicitacao> ObterSolicitacaoPorStatus(Solicitacao solicitacao)
            {
                SGCTBDEntities ctx = new SGCTBDEntities();
    
                try
                {
                    return ctx.Solicitacoes.Where(x => x.Status_Id == solicitacao.Status_Id).OrderBy(x => x.Status_Id).ToList();
                }
                catch
                {
                    return null;
                }
            }
    

     

    Abraços!

    quinta-feira, 19 de janeiro de 2012 20:06
  • Obrigado você ajudou muito o código ficou o seguinte

    public static List<Solicitaco> ObterSolicitacaoPorStatus(Solicitaco solicitacao)
            {
                SGCTBDEntities ctx = new SGCTBDEntities();
    
                try
                {
                    List<Solicitaco> Solicitacoes = ctx.Solicitacoes.Where(x => x.Status_Id == solicitacao.Status_Id).OrderBy(x => x.Status_Id).ToList();
                    return Solicitacoes;
                }
                catch
                {
                    return null;
                }
            }
    

    Estou retornando o objeto solicitacao, para ser apresentado em um DataGridView....

    foreach (Solicitaco x in SolicitacaoDAO.ObterSolicitacaoPorStatus(solicitacao))
                {
                    grdSolicitacoes.Rows.Add(x.Id, x.Anexo, x.Assunto, x.Descricao, x.Status_Id, x.Usuario_Id, x.OrigemSolicitacao, x.Departamento_Id, x.DataSolicitacao);
                }
    

    Vlw...

    sexta-feira, 20 de janeiro de 2012 11:19