2010-11-06 31 views
58

Tôi đã có những điều cơ bản của LINQ-to-SQL xuống, nhưng tôi đã đấu tranh cố gắng để có được JOINs để hoạt động đúng. Tôi muốn biết làm thế nào để chuyển đổi sau đây để LINQ-to-SQL (lý tưởng bằng cách sử dụng phương pháp chuỗi, vì đó là định dạng ưa thích của tôi).Làm cách nào để chuyển đổi nhiều kết nối bên trong trong SQL thành LINQ?

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 

Trả lời

132

Sử dụng cú pháp truy vấn:

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 
} 

Sử dụng phương pháp chaining:

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

Cảm ơn các ví dụ vô cùng tuyệt vời ... vẫn còn hữu ích 3,5 năm sau! –

Các vấn đề liên quan