LINQ EM OBJETOS (BINDINGSOURCE)

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

LINQ EM OBJETOS (BINDINGSOURCE)

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#470603 - 11/01/2017 12:49:30

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 11/01/2017 12:50:26 por MRSILVA

Olá.
Tenho formulário que os  TextBox e um DataGridView está ligados  a um bindingSorce  esse bindingSorce  recebe os dados de uma lista (BindingList<MinhaClasse>). Estou tentando fazer um filtro no dataGridView, mas não consigo implementar, fiz diversas pesquisas onde descobri quando utilizamos coleções (BindingList) tem que ser usado Linq para fazer consultas (filtros) estou tentando fazer uma simples consulta somente para teste no meu programa, mas está retornando o segunte erro (Não é possivel encontrar uma implementação do padrão de consulta para o tipo de origem system.window.forms.bindingsource.....) Alguém poderia me ajudar com algum exemplo ou ajuda como filtrar meu DataGridView, ou seja meu BindingSource e o mesmo continuar vinculados nos meus controles.

Meus códigos:

  //Criação do bindingSorce
BindingSource dados = new BindingSource();
//Recebendo os dados do banco de dados
dados.DataSource = new BindingList<Produto>(produto.todos(codigo));
//DataGridView recebendo os dados do BindingSorce
dgProd.DataSource = dados;

//Realizar um filtro?
dados.DataSource = from prod in dados where prod.Descricao == "Teste" select prod;
O erro acontece na palavra dados.

Desde já agradeço a ajuda.





#470609 - 11/01/2017 15:42:34

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


Membro da equipe
LINQ não é bem assim que funciona.... para fazer do exato jeito que está querendo(obj.propriedade = List<T>) você deveria usar uma expressão lambda.


_______________________________________________________________________
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!


#470612 - 11/01/2017 16:27:16

MRSILVA
MARINGA
Cadast. em:Julho/2015


Obrigado Kerplunk.

Estou fazendo meu projeto com base nas suas aulas do Youtube já faz alguns dias que estou tentando fazer essa filtragem sem sucesso.

A unica forma de fazer a filtragem é através do Linq? Tentei da forma tradicional não da erro mas também não acontece nada.

Antes de postar a primeira mensagem nas pesquisas que fiz já apontava sobre a expressão lampda,  até achei varias coisas na internet sobre isso, mas ainda não consegui fazer. Você tem algum exemplo? Pode ser da internet mais especifico do que preciso para que possa estudar para apreender?

Desde já agradeço.




#470613 - 11/01/2017 16:48:41

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


Membro da equipe

 Anexos estao visíveis somente para usuários registrados

Pelo modelo disponível nos vídeos você vai ter que fazer realmente com expressões lambda. Para usar a funcionalidade de query provider do LINQ teria que refazer o projeto. SPOILER: esse projeto em anexo é o tema de uma das aulas adiante. Ele contêm uma implementação do LINQ e já com o conceito de contexto de dados. O banco de dados que ele trabalha é o mesmo que o dos vídeos, uma tabela cliente e uma contatos.

_______________________________________________________________________
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!


#470621 - 11/01/2017 18:58:20

MRSILVA
MARINGA
Cadast. em:Julho/2015


Mais uma vez muito obrigado Kerplunk.

Muito interessante esse modo de programar já comprei três videos cursos de autores diferentes nenhum aborda esse assunto de como podemos usar, estou ansioso pelo novos videos.
Vou estudar os códigos que você passou.
Desculpe por estragar sua surpresa




#470622 - 11/01/2017 19:05:52

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


Membro da equipe

Última edição em 11/01/2017 19:08:15 por KERPLUNK

Citação:
:
Mais uma vez muito obrigado Kerplunk.

Muito interessante esse modo de programar já comprei três videos cursos de autores diferentes nenhum aborda esse assunto de como podemos usar, estou ansioso pelo novos videos.
Vou estudar os códigos que você passou.
Desculpe por estragar sua surpresa

Eu fico meio sem jeito de dizer que não tenho postado nada ultimamente. É que estou em um projeto pessoal que está me tomando uma boa parte do tempo livre: Entrar em forma! Estou conseguindo excelentes resultados, perdi 17 quilos em 3 meses, corro entre 3 e 4 km TODOS OS DIAS e ainda faço bastante musculação.
Neste exato momento, estou apenas 8 kilos acima do meu peso ideal, mas o prognóstico é ter me livrado deles em pouco mais de um mês! Mas quero postar o vídeos sobre o LINQ o quanto antes, o que aborda esse código que te passei. Ele torna obsoleto todo o projeto que temos feito até então. Muitos vão odiar isso, mas eu já disse bem claramente que o que está sendo feito é somente para aprendizado.

_______________________________________________________________________
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!


#470795 - 18/01/2017 00:05:41

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 18/01/2017 00:09:50 por MRSILVA

Parabéns Kerplunk pelo resultado em três meses sei como é difícil perder peso por experiência própria, também estou precisando fazer mais exercícios, mas atualmente o tempo que me sobra estou dedicando a estudar programação.

Citação:
Ele torna obsoleto todo o projeto que temos feito até então. Muitos vão odiar isso, mas eu já disse bem claramente que o que está sendo feito é somente para aprendizado.  


Eu sou um deles. Rsrsrs....

Estudei seu exemplo, isso acabou me levando a estudar o Entity Framework, fiz um projeto teste e conseguir fazer as filtragens que originou esse poste, percebi que foram gerados muitos códigos automáticos e por isso surgiu outras dúvida que ficaria muito grato se você ou alguém com experiência puder respondê-las.
No seu projeto exemplo você fez tudo manualmente já quando utilizamos o Entity Framework tudo é gerado automaticamente pelo Visual Studio (Classes, Contexto etc).  Em um projeto comercial (não para estudo) levando em consideração um projeto de médio porte é utilizado Entity Framework para geração das classes contexto entre outros ou é feito de forma semelhante do seu exemplo? Pergunto isso porque no seu exemplo para mim ficou mais claro as coisas acho que será mais fácil de fazer manutenção e novas implementações.
No meu caso, por exemplo, estou desenvolvendo aos poucos meu projeto caso faça o uso do Entity Framework para geração do meu código será que não vou ter problemas quando fizer novas implementações, ou seja, criação de novas classes entre outros? Em termos de performance existe alguma diferença entre o código gerado automaticamente e os feitos manualmente levando em considerações boas pratica de programação?
Desde já agradeço.




#470796 - 18/01/2017 00:42:17

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


Membro da equipe
São várias perguntas com respostas não muito curtas, mas vamos lá:
Em um projeto comercial (não para estudo) levando em consideração um projeto de médio porte é utilizado Entity Framework para geração das classes contexto entre outros ou é feito de forma semelhante do seu exemplo?
É feito exatamente dessa forma. O assistente do Visual Studio, utiliza um modelo(template) de código chamado T4. Você pode alterar esses templates da maneira que quiser se quiser algo mais nas suas classes geradas automaticamente. Mesmo depois de geradas, as classes podem ser alteradas da maneira que quiser, são simplesmente classes da mesma maneira que as classes que foram geradas manualmente nos vídeos. Tenha em mente que se você rodar novamente o assistente, o que você construiu manualmente será substituído, por isso que se você quer alterações que sejam sempre geradas, é melhor que faça isso no template T4.

No meu caso, por exemplo, estou desenvolvendo aos poucos meu projeto caso faça o uso do Entity Framework para geração do meu código será que não vou ter problemas quando fizer novas implementações, ou seja, criação de novas classes entre outros?
É o mesmo caso anterior, você pode rodar o assistente quantas vezes quiser e gerar os código novamente, mas tenha em mente que as alterações construídas manualmente serão sobrescritas.

Em termos de performance existe alguma diferença entre o código gerado automaticamente e os feitos manualmente levando em considerações boas pratica de programação?
O Entity Framework, foi desenvolvido tendo consideração todas as melhores práticas possíveis de serem aplicadas. Veja que seja qual for o caso, o processamento é obrigatório. Se você escrever código manualmente, consultando tabelas e gerando objetos, invariavelmente você terá processamento. O EF foi desenvolvido pensando nisso. É praticamente impossível ter todas as vantagens que o EF oferece sem nenhuma perda de performance. Em outras palavras, o EF é sim um pouco mais lento que se usássemos ADO.NET puramente. Mas a compensação por facilidade de uso e possibilidades que ele disponibiliza compensam. Imagine que você tem uma três tabelas:
Esporte - > Id, Descricao
Time - > Id, Descricao, IdEsporte
Jogador - > Id, Nome, IdTime
Temos aqui três tabelas. Imagine que você queira uma lista de jogadores por esporte. Obviamente você poderia criar todas as classes compatíveis com aquele mesmo modelo de programação que uso nos vídeos, mas convenhamos, seria bastante trabalhoso. Além disso, você quer colocar essa lista de jogadores em um grid editável, onde o usuário possa alterar qualquer coisa à vontade como se estivesse usando o Excel(coisa que usuários ADORAM). Com a metodologia que mostro nos vídeos, isso seria bastante trabalhoso, não impossível, mas bastante trabalhoso mesmo. Com o EF, basta fazer um LINQ e passar para o Grid. Tudo será mostrado, com possibilidade de adição, edição e deleção de dados, sincronizada automaticamente com o banco de dados, mudou, alterou. Todas as operações são passíveis de Log, você tem a opção de uso de Deferred Loading nativamente(sem nenhum código necessário), colunas organizáveis e móveis, filtros automáticos, exportação de dados, tudo prontinho, sem nenhuma linha adicional de código por sua parte. Isso tudo, vai impactar na performance. Mas se você fizesse tudo "na mão", não impactaria também? Além da possibilidade muitos(muitos mesmo) exceções e fora o trabalho que você teria se fosse fazer a mesma coisa para 10, 20 ou até 30 tabelas diferentes. Levaria MESES de trabalho, literalmente. Com o EF, você pode fazer isso em questão de MINUTOS e com muito menos possibilidades de exceções e facilidade de manutenção.


_______________________________________________________________________
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!


#470797 - 18/01/2017 06:11:29

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


Mesmo programação sendo um lazer e passa tempo, um dia ainda chego la, nesse padrão, nível de implementação
Por conta propria e seguindo varias fontes, apanhei muito, uma dizia uma coisa, outra era totalmente diferente, ai era por assistente, hora na mao, daqui a pouco assistente novamente perdendo tudo nao saia do lugar
Vou aguardar proximos videos

Pessoal acima do peso, to achando q é mal de viver de programação, eu sou o palito de desentupir agulha kkkkk



#471913 - 23/02/2017 16:50:42

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 23/02/2017 16:52:16 por MRSILVA

Olá.

Demorei um pouco para retornar a esse tópico, más é pelo motivo que refiz meu projeto seguindo as orientações do Kerplunk, estou utilizando Entityframework  de modo code first (Não sei bem se isso mesmo), ou seja, criou minhas classes e  é depois faço a migração para o banco de dados utilizando um recurso do visual Studio (Package Manager console) esse recurso é fantástico.

Kerplunk no seu projeto de exemplo que você postou você utiliza   "mapping" para mapear suas entidades eu estou utilizando "DataAnnotations" existe alguma diferença entre os dois no quesito performance ou facilidades?
Para quem quer saber mais indico esse  explica com detalhes: https://www.youtube.com/watch?v=d3FvOAPVPCo&list=LL0Y6Fuay6SuA4_dhYyrhbow&index=5&t=1449s

Muito obrigado kerplunk pela ajuda.




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


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário