none
Problemas com metodo que retorna um IQueryable RRS feed

  • Pergunta

  • Olá galera.

    Estou com o seguinte problema.

    Criei um método que me retorna uma IQueryable não tipado.

       public IQueryable SelecionaMateriasPrimasEstoquesQuantidadePorLote(int codMateriaPrima)
       {
                return (from e in _db.MateriasPrimasEstoques
                        where e.codMateriaPrima == codMateriaPrima
                        select new
                        {
                            e.codMateriaPrima,
                            e.codFornecedor,
                            e.numeroLote,
                            e.dataValidade,
                            e.quantidadeEstoque,
                            e.quantidadeReservada,
                            quantidadeDisponivel = (e.quantidadeEstoque - e.quantidadeReservada)
                        });
       }
    Criei um outro método que aproveita o resultado do método a cima:

       public IQueryable SelecionaMateriasPrimasEstoquesQuantidadeDisponivel(int codMateriaPrima)
       {
                var quantidadePorLote = this.SelecionaMateriasPrimasEstoquesQuantidadePorLote(codMateriaPrima);
       
                return (from qtdeLote in quantidadePorLote
                        where qtdeLote.codMateriaPrima == codMateriaPrima
                        group qtdeLote by new { qtdeLote.codMateriaPrima } into qtdeDisp
                        select new
                        {
                            qtdeDisp.Key.codMateriaPrima,
                            quantidadeDisponivel = qtdeDisp.Sum(q => q.quantidadeDisponivel)
                        });
       }
    Ocorre que está ocorrendo erro quanto faço a querie com o objeto quantidadePorLote:
     
       Error 4 Could not find an implementation of the query pattern for source type 'System.Linq.IQueryable'.  'Where' not found.  Consider explicitly specifying the          type of the range variable 'qtdeLote'. C:\Projetos\Sistema\Sistema.new\Sistema.Dados\Dados\Sql\OperacoesDB.cs 325 38 Sistema.Dados

    Eu não queria recriar a consulta no segundo metodo. Gostaria de reaproveitar este código.

    Alguém tem alguma dica sobre este problema?

    Abraços a todos.

    Analísta Programador jr.
    segunda-feira, 15 de junho de 2009 20:28

Todas as Respostas

  • Entao... fica dificil de definir qual eh o tipo do seu campo quantidadeDisponivel... é short, int ou long ?

    Pode ser esse o problema.... tenta forçar a tipagem dele

     public IQueryable SelecionaMateriasPrimasEstoquesQuantidadePorLote(int codMateriaPrima)
       {
                return (from e in _db.MateriasPrimasEstoques
                        where e.codMateriaPrima == codMateriaPrima
                        select new
                        {
                            e.codMateriaPrima,
                            e.codFornecedor,
                            e.numeroLote,
                            e.dataValidade,
                            e.quantidadeEstoque,
                            e.quantidadeReservada,
                            quantidadeDisponivel = Convert.ToInt32 (e.quantidadeEstoque - e.quantidadeReservada)
                        });
       }
    sábado, 20 de junho de 2009 00:39
    Moderador
  • Neste caso seria um Nullable Int32.

    Tentarei desta forma e respondo.

    abraços.

    Analísta Programador jr.
    segunda-feira, 22 de junho de 2009 19:01