MAIS UMA DÊVIDA COM LIST<T>
Analisando a seguinte situação:
Classe: Cor Classe: Carro
Id - Descrição Id - Descrição
1 - Branco 1 - Fox
2 - Preto 2 - Prisma
3 - Prata 3 - Voyage
Classe Movimentação:
Id - Qtde - IdCarro - IdCor
1 1 1 2
2 1 2 3
Preciso criar uma List<T> da movimentação e preencher um DataGridView com DataSource;
List<T>Movimentação _mov = new List<Movimentação>(new Movimentação().GetAll());
dgvmov.DataSource = _mov;
Até aà beleza; Mas para mostrar no DataGridView, preciso mostrar o modelo do carro e a cor e NÃO o Id de cada um;
Está aà a minha dúvida. Como montar a List<T> para poder retornar as descrições de modelo de carro e cor ao invés de mostrar o Id?
Classe: Cor Classe: Carro
Id - Descrição Id - Descrição
1 - Branco 1 - Fox
2 - Preto 2 - Prisma
3 - Prata 3 - Voyage
Classe Movimentação:
Id - Qtde - IdCarro - IdCor
1 1 1 2
2 1 2 3
Preciso criar uma List<T> da movimentação e preencher um DataGridView com DataSource;
List<T>Movimentação _mov = new List<Movimentação>(new Movimentação().GetAll());
dgvmov.DataSource = _mov;
Até aà beleza; Mas para mostrar no DataGridView, preciso mostrar o modelo do carro e a cor e NÃO o Id de cada um;
Está aà a minha dúvida. Como montar a List<T> para poder retornar as descrições de modelo de carro e cor ao invés de mostrar o Id?
Por que você não faz Join com LINQ to SQL na hora de já trazer do banco?
é bastante simples. Mas como o objeto à ser exibido é diferente estruturalmente dos outros dois, um outro objeto é necessário, poderia ser um objeto dynamic se não quiser criar uma classe POCO para isso. Fiz um fiddler pra isso pra você ter uma idéia. Nele, a classe [Ô]Carro[Ô] poderia ser substituÃda tranquilamente por um anônimo, mas tipos anônimos devem ser usados como [Ô]quebra galho[Ô], quando eles não serão usados em nenhum outro lugar no projeto, e mesmo assim, é melhor sempre usar classes reais, ainda que eles sejam usadas em apenas um lugar.
Bom dia pessoal!!!
DS2T, eu até pensei em fazer isso, porém fiquei em dúvida se seria o correto.
Encontrei um exemplo para fazer usando o LINQ com Join, assim:
Dessa forma eu consigo retornar todos os lançamentos que eu preciso, mostrando a descrição da conta e não somente o id dela.
Porém eu preciso de mais uma condição e não estou conseguindo incluir essa condição nesse LINQ.
A condição é: todos esses lançamentos da query acima, onde o mês e o ano correspondam ao que o usuário escolher, por exemplo: a data seria 20/01/2016,
portanto a condição seria mais ou menos assim:
where l.DataVencimento.Month == _mês && l.DataVencimento.Year == _ano
Porém, quando executo esse comando usando o LINQPad 4 para testar se o LINQ está correto, ele me dá uma mensagem:
System.Nullable<System.DateTime>[ô] does not contain a definition for [ô]Month[ô] and no extension method [ô]Month[ô] accepting a first argument of type [ô]System.Nullable<System.DateTime>[ô] could be found
Então se puder me ajudar a complementar a query, eu agradeço.
DS2T, eu até pensei em fazer isso, porém fiquei em dúvida se seria o correto.
Encontrei um exemplo para fazer usando o LINQ com Join, assim:
from l in Lancamentos
join c in Contas on l.IdConta equals c.Id
select new { Id = l.Id, DataVencimento = l.DataVencimento, IdConta = l.IdConta, Conta = c.Descricao }
Dessa forma eu consigo retornar todos os lançamentos que eu preciso, mostrando a descrição da conta e não somente o id dela.
Porém eu preciso de mais uma condição e não estou conseguindo incluir essa condição nesse LINQ.
A condição é: todos esses lançamentos da query acima, onde o mês e o ano correspondam ao que o usuário escolher, por exemplo: a data seria 20/01/2016,
portanto a condição seria mais ou menos assim:
where l.DataVencimento.Month == _mês && l.DataVencimento.Year == _ano
Porém, quando executo esse comando usando o LINQPad 4 para testar se o LINQ está correto, ele me dá uma mensagem:
System.Nullable<System.DateTime>[ô] does not contain a definition for [ô]Month[ô] and no extension method [ô]Month[ô] accepting a first argument of type [ô]System.Nullable<System.DateTime>[ô] could be found
Então se puder me ajudar a complementar a query, eu agradeço.
Bom, creio que agora eu consegui:
Obrigado DS2T e Kerplunk pelas respostas. Deixo o tópico aberto até o final da tarde.
var query = (from l in _lancamentos
where l.DataVencimento.Month == Convert.ToInt32(_mes) && l.DataVencimento.Year == Convert.ToInt32(_ano)
join c in _contas
on l.IdConta equals c.Id
select new
{
l.Id,
l.IdConta,
c.Descricao,
l.DataVencimento,
l.Valor
}).ToList();
Obrigado DS2T e Kerplunk pelas respostas. Deixo o tópico aberto até o final da tarde.
Sugestão:
Neste seu tópico, o KERPLUNK demonstra a criação de um tipo dinâmico, já velho conhecido, para viabilizar a visualização de tipos relacionados, e você expõe uma solução no tratamento de campo do tipo data nulável, coisa relativamente nova no VB.Net, ainda que também velho conhecido do C#.
Ambos são muito comuns no dia-a-dia, e mesmo que [Ô]trivial[Ô], há muita gente que ainda não passou por isso, principalmente quem ainda está vindo do VB6. Por mais óbvio que seja, querendo ou não, perde-se algum tempo no [Ô]quebra-cabeças[Ô],
Dessa forma, seria interessante deixar algo nesse sentido, por exemplo na seção de códigos, para servir de exemplo para quem futuramente precisar.
Neste seu tópico, o KERPLUNK demonstra a criação de um tipo dinâmico, já velho conhecido, para viabilizar a visualização de tipos relacionados, e você expõe uma solução no tratamento de campo do tipo data nulável, coisa relativamente nova no VB.Net, ainda que também velho conhecido do C#.
Ambos são muito comuns no dia-a-dia, e mesmo que [Ô]trivial[Ô], há muita gente que ainda não passou por isso, principalmente quem ainda está vindo do VB6. Por mais óbvio que seja, querendo ou não, perde-se algum tempo no [Ô]quebra-cabeças[Ô],
Dessa forma, seria interessante deixar algo nesse sentido, por exemplo na seção de códigos, para servir de exemplo para quem futuramente precisar.
Valeu, professor, finalmente apareceu, já estava sentindo sua falta, rsrs.
Na verdade eu ainda estou engatinhando nessa parte. é tudo meio novo pra mim, estou tendo que aprender muita coisa. Que bom que temos pessoas como Kerplunk, Jaba, DS2T e muitos outros que me ajudaram e estão me ajudando [Ô]pra caramba[Ô].
Já pensei em deixar alguns códigos na seção do Fórum, mas somente quando eu tiver certeza de estar fazendo tudo certo, pra não correr o risco de querer ensinar da maneira errada, assim como eu aprendi.
Abraços e até mais.
Na verdade eu ainda estou engatinhando nessa parte. é tudo meio novo pra mim, estou tendo que aprender muita coisa. Que bom que temos pessoas como Kerplunk, Jaba, DS2T e muitos outros que me ajudaram e estão me ajudando [Ô]pra caramba[Ô].
Já pensei em deixar alguns códigos na seção do Fórum, mas somente quando eu tiver certeza de estar fazendo tudo certo, pra não correr o risco de querer ensinar da maneira errada, assim como eu aprendi.
Abraços e até mais.
Tópico encerrado , respostas não são mais permitidas