3
I have the following consultation on SQL:
select
e.idEstado, e.txtNomeEstado, e.txtSiglaEstado,
c.idCidade, c.txtNomeCidade,
de.txtH1, de.txtTitulo, de.txtDescricaoEstado, de.txtDescription
from tbDescricaoEstado de
left join tbCidade c on de.idCidade = c.idCidade
left join tbEstado e on de.idEstado = e.idEstado
And I’m trying to make the same consultation with lambda, but I’m having difficulty accessing the fields of tbCidade when it’s time to do the Selectmany. What I’m trying is the following (incomplete because I can’t see the fields of tbCidade):
DescricaoEstadoECidade DescricaoEstadoECidade = bd.tbDescricaoEstado
.GroupJoin(bd.tbCidade, de => de.idCidade, c => c.idCidade, (de, c) => new { De = de, C = c.DefaultIfEmpty() })
.GroupJoin(bd.tbEstado, c => c.De.idEstado, e => e.idEstado, (c, e) => new { C = c, E = e.DefaultIfEmpty() })
.SelectMany(final => final.E,
(final, e) => new
{ idEstado = e.idEstado, txtNomeEstado = e.txtNomeEstado, txtSiglaEstado = e.txtSiglaEstado
idCidade = final.C.C.?
})
.toList();
Could someone help me?
@EDIT
I’m managing to do, as follows, only it doesn’t look very good. Someone could present a better way?
var DescricoesEstadosECidades = bd.tbDescricaoEstado
.GroupJoin(bd.tbCidade, de => de.idCidade, c => c.idCidade, (de, c) => new { De = de, C = c.DefaultIfEmpty() })
.SelectMany(final => final.C,
(final, c) => new
{
idCidade = c.idCidade,
txtNomeCidade = c.txtNomeCidade,
txtH1 = final.De.txtH1,
txtTitulo = final.De.txtTitulo,
txtDescricaoEstado = final.De.txtDescricaoEstado,
txtDescription = final.De.txtDescricaoEstado,
idEstado = final.De.idEstado
}
)
.GroupJoin(bd.tbEstado, de => de.idEstado, e => e.idEstado, (de, e) => new { De = de, E = e.DefaultIfEmpty() })
.SelectMany(final => final.E,
(final, e) => new
{
idEstado = e.idEstado,
txtNomeEstado = e.txtNomeEstado,
txtSiglaEstado = e.txtSiglaEstado,
idCidade = final.De.idCidade,
txtNomeCidade = final.De.txtNomeCidade,
txtH1 = final.De.txtH1,
txtTitulo = final.De.txtTitulo,
txtDescricaoEstado = final.De.txtDescricaoEstado,
txtDescription = final.De.txtDescription
}
)
.ToList();
I understand. Unfortunately here I can not change the customer’s bank
– AlamO