Tengo los conceptos básicos de LINQ to SQL abajo, pero he estado tratando de conseguir que se Une a funcionar correctamente. Me gustaría saber cómo convertir el siguiente a LINQ to SQL (idealmente utilizando el método de encadenamiento, como que es mi formato preferido).

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
InformationsquelleAutor Ed Sinek | 2010-11-06

1 Comentario

  1. 133

    El uso de la sintaxis de la consulta:

    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
    }

    Utilizando el método de encadenamiento:

    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 
                       });
    • Gracias por la muy impresionante ejemplo…todavía útil de 3,5 años más tarde!

Dejar respuesta

Please enter your comment!
Please enter your name here