LINQ COM DISTINCT

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

LINQ COM DISTINCT

C#

 Compartilhe  Compartilhe  Compartilhe
#483541 - 01/08/2018 09:58:00

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


Bom dia pessoal!!!
Estou precisando fazer uma consulta com LinQ + Distinct:

               var 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 new
                             {
                                 data = est.Data,
                                 codigoproduto = est.CodigoProduto,
                                 produto = prod.Descricao,
                                 quantidade = est.Quantidade,
                                 sigla = tipo.Sigla,
                                 tipooperacao = tipo.Descricao,
                                 estoqueatual = prod.EstoqueAtual
                             };


Dessa forma, está listando todos os produtos da tabela de Estoque, porém eu preciso que quando tiver registros repetidos, mostre apenas uma vez na listagem.
Estou apanhando e não coneguindo. Alguém me dá uma sugestão?

____________________________________________________
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 #483545 - 01/08/2018 10:44:38

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Qual é a cardinalidade entre as tabelas?




#483547 - 01/08/2018 11:00:41

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


São 3 Tabelas:
Estoque - contém a movimentação do estoque (venda, consignação, retorno, etc)
Produto  - contém o cadastro dos produtos
TipoOperacao - contém os tipos de operação (venda, consignação, retorno, etc).

Então eu preciso mostrar a movimentação do estoque, exemplo:
Data              Código       Descrição                                           Qt  Tipo Op.             Sigla
01/08/2018 - 01.00001 - Caderno Tilibra 96 folhas Brochura - 10 - Estoque Inicial - IN
01/08/2018 - 01.00001 - Caderno Tilibra 96 folhas Brochura -   2 - Venda              - VE
01/08/2018 - 01.00001 - Caderno Tilibra 96 folhas Brochura -   3 - Entrada de Mercadoria - EM
01/08/2018 - 01.00002 - Caderno Tilibra 96 folhas Aspiral     - 10 - Estoque Inicial - IN
01/08/2018 - 01.00002 - Caderno Tilibra 96 folhas Aspiral     -   2 - Venda              - VE
01/08/2018 - 01.00002 - Caderno Tilibra 96 folhas Aspiral     -   3 - Entrada de Mercadoria - EM

Até aqui está correto, estou usando a consulta LinQ acima.
Agora eu gostaria que quando o usuário clicasse em um outro botão, irá mostrar somente o estoque atual dos produtos,
então tenho que fazer um Distinct pelo codigo do produto para não mostrar repetidos.
O resultado teria que ser:

Código       Descrição                                           Est.Atual
01.00001 - Caderno Tilibra 96 folhas Brochura -  7
01.00002 - Caderno Tilibra 96 folhas Aspiral     -  8



____________________________________________________
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.




#483549 - 01/08/2018 11:06:31

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


Mas acho que estou fazendo errado, estou tentando utilizar a mesma query e acho que por isso não vai dar certo.
Acho que eu preciso fazer duas queries diferentes. Mas para isso precisava declarar a variável fora do bloco Using para poder usar, pois faço algumas verificações antes de exibir os dados com o datasource.
Então acho que tenho que declarar a variável da maneira correta, como explicado no outro tópico, estou certo ou errado?

____________________________________________________
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.




#483565 - 01/08/2018 15:39:10

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


É isso mesmo, tive que fazer duas consultas LinQ separadas para cada caso, senão eu não iria conseguir o resultado esperado.
Mesmo assim, obrigado pela ajuda.
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.




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


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