J'ai les bases de LINQ-to-SQL vers le bas, mais j'ai eu du mal à essayer de faire fonctionner JOINs correctement. Je voudrais savoir comment convertir ce qui suit en LINQ-to-SQL (en utilisant idéalement le chaînage de méthode, 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
Utilisation de 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
}
Utilisation du chaînage de méthodes:
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
});