Everything will depend on how are your relationships and keys, a basic example would be like this:
Tables and relationships
Uma Pessoa pode ter ou não vários Telefones e um Telefone possui um Tipo
Lambda Expression with 2 Join, ie three tables, consequently three models:
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]
I added an example just below, if you want something specific of your models inform equal drawing below, I write the lambda Xpression of it, but, by example can be taken out the logic!
– user6026