MAIS UMA DÊVIDA COM LIST<T>

PERCIFILHO 10/05/2016 15:14:36
#461969
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?
DS2T 10/05/2016 17:15:20
#461970
Resposta escolhida
Por que você não faz Join com LINQ to SQL na hora de já trazer do banco?
KERPLUNK 10/05/2016 18:51:01
#461972
é 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.
PERCIFILHO 11/05/2016 08:12:25
#461980
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:

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.
PERCIFILHO 11/05/2016 10:03:13
#461982
Bom, creio que agora eu consegui:

            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.
PROFESSOR 11/05/2016 10:40:05
#461985
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.
PERCIFILHO 11/05/2016 12:02:54
#461991
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.
Tópico encerrado , respostas não são mais permitidas