【问题标题】:How do I convert multiple inner joins in SQL to LINQ?如何将 SQL 中的多个内部联接转换为 LINQ?
【发布时间】:2011-05-06 03:29:05
【问题描述】:

我已经掌握了 LINQ-to-SQL 的基础知识,但我一直在努力让 JOIN 正常工作。我想知道如何将以下内容转换为 LINQ-to-SQL(最好使用方法链接,因为这是我的首选格式)。

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

【问题讨论】:

    标签: c# linq linq-to-sql inner-join


    【解决方案1】:

    使用查询语法:

    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
    }
    

    使用方法链:

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

    【讨论】:

    • 感谢这个非常棒的例子……3.5 年后仍然有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多