Comment convertir plusieurs jointures internes de SQL en LINQ?

J’ai les bases de LINQ-to-SQL, mais j’ai eu du mal à faire en sorte que les JOIN fonctionnent correctement. J’aimerais savoir comment convertir ce qui suit en LINQ-to-SQL (idéalement, en utilisant le chaînage de méthodes, car c’est mon format préféré).

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 

En utilisant la syntaxe de requête:

 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 } 

En utilisant le chaînage de la méthode:

 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 });