Everything will depend on how your relationships and keys are, a basic example would look like this:
Tables and Relationships
Uma Pessoa pode ter ou não vários Telefones e um Telefone possui um Tipo
LambdaExpressionwith2Join,iethreetables,consequentlythreemodels:
using (GenericsContext db = new GenericsContext())
{
var resultado = db.Pessoas
.Join(db.Telefones, pessoa => pessoa.PessoaId, telefone => telefone.PessoaId, (pessoa, telefone) => new { pessoa, telefone })
.Join(db.Tipos, telefone => telefone.telefone.TipoId, tipo => tipo.TipoId, (telefone, tipo) => new { telefone, tipo })
.Select(x => new
{
x.telefone.pessoa.PessoaId,
x.telefone.pessoa.Nome,
x.tipo.Descricao,
x.telefone.telefone.Ddd,
x.telefone.telefone.Numero
});
var resultadoToList = resultado.ToList();
}
SQL generated by this expression:
SELECT
[Extent1].[PessoaId] AS [PessoaId],
[Extent1].[Nome] AS [Nome],
[Extent3].[Descricao] AS [Descricao],
[Extent2].[Ddd] AS [Ddd],
[Extent2].[Numero] AS [Numero]
FROM [dbo].[Pessoas] AS [Extent1]
INNER JOIN [dbo].[Telefones] AS [Extent2] ON [Extent1].[PessoaId] = [Extent2].[PessoaId]
INNER JOIN [dbo].[Tipos] AS [Extent3] ON [Extent2].[TipoId] = [Extent3].[TipoId]