59 votes

LINQ to SQL - REJOINDRE

J'ai acquis les bases de LINQ-to-SQL, mais je l'ai ai eu du mal à essayer d'obtenir des Jointures pour fonctionner correctement. Je voudrais savoir comment convertir le suivant à LINQ-to-SQL (idéalement à l'aide de la méthode de chaînage, comme 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

Merci,
--Ed

133voto

Dave Downs Points 4677

À l'aide de la syntaxe de la 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
}

L'aide de la méthode de chaînage:

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

1voto

Vidar Nordnes Points 961

Ce site peut vous aider. Ils ont plusieurs exemples sur la manière de traduire SQL en LINQ http://msdn.microsoft.com/en-us/vbasic/bb688085.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X