COMO DECLARAR ESTA VARIÁVEL

 Tópico anterior Próximo tópico Novo tópico

COMO DECLARAR ESTA VARIÁVEL

C#

 Compartilhe  Compartilhe  Compartilhe
#483542 - 01/08/2018 10:12:41

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Bom dia pessoal!!
Preciso declarar a variável "filtro" para usar no bloco Using:


            using (db = new Conexao())
            {
                if (chkTodos.Checked == true)
                {
                    filtro = from est in db.Estoque
                             join prod in db.Produto on est.ProdutoId equals prod.Id
                             join tipo in db.TipoOperacao on est.SiglaTipoOperacao equals tipo.Sigla
                             select est;
                }
                else
                {
                    filtro = from est in db.Estoque
                             join prod in db.Produto on est.ProdutoId equals prod.Id
                             select est;
                }
            }


Se eu declarar assim:
var filtro;

ou assim:
var filtro = null;

ocorre erro. Existe uma maneira de fazer isso?



____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#483543 - 01/08/2018 10:35:39

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Declare seu tipo de fato.
Ex:
ObservableCollection<Estoque> filtro = null;



#483546 - 01/08/2018 10:47:51

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Olá GUIMORAES,
Desculpe meu pouco conhecimento, mas o que é esse tipo ObservableCollection?
Porque não deu certo, aparece essa mensagem:
Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: System.DateTime data, string codigoproduto, string produto, int? quantidade, string sigla, string tipooperacao, int? estoqueatual>>' to 'System.Collections.ObjectModel.ObservableCollection<Models.Estoque>'. An explicit conversion exists (are you missing a cast?)


____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#483548 - 01/08/2018 11:05:15

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Última edição em 01/08/2018 11:05:57 por GUIMORAES

ObservableCollection é uma coleção dinâmica de objetos de um determinado tipo, como o List<T> é também, mas que tem uma notificação automática das ações, como as inserções, atualizações e deleções.

Para a sua situação, você deve utilizar o IQueryable.
IQueryable<Models.Estoque> filtro = null;


ou

IQueryable<Models.Estoque> filtro = Enumerable.Empty<Models.Estoque>().AsQueryable();





#483550 - 01/08/2018 11:12:10

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Declarando como IQueryable, mesmo erro:
Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: System.DateTime data, string codigoproduto, string produto, int? quantidade, string sigla, string tipooperacao, int? estoqueatual>>' to 'System.Linq.IQueryable<Models.Estoque>'. An explicit conversion exists (are you missing a cast?)


Perceba que o filtro vai conter mais de um Modelo: Estoque, Produto e TipoOperacao

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#483551 - 01/08/2018 11:13:06

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se você declarar a variável dentro do bloco using, ela vai estar disponível somente dentro do bloco using. Se o que você quer é ter o resultado dela FORA do bloco using, você declara ela fora do bloco using. O tipo dela é relevante apenas se você quiser, ela pode ser simplesmente um tipo anônimo, que você declara com "var" simplesmente.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#483564 - 01/08/2018 15:37:13

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Valeu Kerp e Guimoraes, eu modifiquei o projeto conforme disse no outro tópico e agora eu consegui o resultado esperado.
Obrigado pela paciência e pelo tempo.
Abraços e até mais.

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#483568 - 01/08/2018 16:18:58

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Citação:
:
Valeu Kerp e Guimoraes, eu modifiquei o projeto conforme disse no outro tópico e agora eu consegui o resultado esperado.
Obrigado pela paciência e pelo tempo.
Abraços e até mais.


Ótimo, valeu.
Seria legal colocar aqui o que você fez, assim compartilhamos a solução com qualquer um que venha a ter o mesmo problema.





#483585 - 02/08/2018 09:35:44

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Citação:
  Se você declarar a variável dentro do bloco using, ela vai estar disponível somente dentro do bloco using. Se o que você quer é ter o resultado dela FORA do bloco using, você declara ela fora do bloco using. O tipo dela é relevante apenas se você quiser, ela pode ser simplesmente um tipo anônimo, que você declara com "var" simplesmente.


Kerplunk, sendo assim, por que quando eu faço isso, não consigo declarar a variável? Tanto dentro quanto fora do Using:


var filtro;

using (db = new Conexao())
{
    if (condicao1 == true)
    {
        filtro = from p in Produto
                   select p;
    }
    else
    {
        filtro = from est in db.Estoque
                   join prod in db.Produto on est.ProdutoId equals prod.Id
                   select est;
    }
    


No Error List aparece o erro: "Implicitly-typed variables must be initialized"

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




Resposta escolhida #483586 - 02/08/2018 10:06:16

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
var filtro = null?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#483588 - 02/08/2018 10:11:45

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Citação:
var filtro = null?

Também não funciona;
Resultado no Error List: "Cannot assign <null> to an implicitly-typed variable"
"

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por PERCIFILHO em 07/08/2018 08:36:05