Come posso convertire più join interni in SQL in LINQ?

Ho le nozioni di base su LINQ-to-SQL, ma ho faticato a cercare di far funzionare correttamente i JOIN. Mi piacerebbe sapere come convertire quanto segue in LINQ-to-SQL (idealmente usando il metodo di concatenamento, poiché questo è il mio formato preferito).

SELECT c.CompanyId, c.CompanyName, p.FirstName + ' ' + p.LastName as AccountCoordinator, p2.FirstName + ' ' + p2.LastName as AccountManager FROM dbo.Companies c INNER JOIN dbo.Persons p ON c.AccountCoordinatorPersonId = p.PersonId INNER JOIN dbo.Persons p2 ON c.AccountManagerPersonId = p2.PersonId 

Utilizzando la syntax della query:

 from c in dbo.Companies join p in dbo.Persons on c.AccountCoordinatorPersonId equals p.PersonId join p2 in dbo.Persons on c.AccountManagerPersonId equals p2.PersonId select new { c.CompanyId, c.CompanyName, AccountCoordinator = p.FirstName + ' ' + p.Surname, AccountManager = p2.FirstName + ' ' + p2.Surname } 

Usando il metodo di concatenazione:

 dbo.Companies.Join(dbo.Persons, c => c.AccountCoordinatorPersonId, p => p.PersonId, (c, p) => new { Company = c, AccountCoordinator = p.FirstName + ' ' + p.Surname }) .Join(dbo.Persons, c => c.Company.AccountManagerPersonId, p2 => p2.PersonId, (c, p2) => new { c.Company.CompanyId, c.Company.CompanyName, c.AccountCoordinator, AccountManager = p2.FirstName + ' ' + p2.Surname });