如何转换在SQL多个内部连接到LINQ? [英] How do I convert multiple inner joins in SQL to LINQ?

查看:119
本文介绍了如何转换在SQL多个内部连接到LINQ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有LINQ到SQL的基础知识了,但我一直在努力试图让连接来正常工作。我想知道如何转换以下为LINQ到SQL(最好使用方法链,因为这是我的preferred格式)。

  SELECT c.CompanyId,c.CompanyName,
            p.FirstName +''+ p.LastName为AccountCoordinator,
            p2.FirstName +''+ p2.LastName作为的AccountManager
从dbo.CompaniesÇ
INNER JOIN dbo.Persons p
ON c.AccountCoordinatorPersonId = p.PersonId
INNER JOIN dbo.Persons P2
ON c.AccountManagerPersonId = p2.PersonId


解决方案

使用查询语法:

 从dbo.CompaniesÇ
加入p在dbo.Persons上c.AccountCoordinatorPersonId等于p.PersonId
加入P2在dbo.Persons上c.AccountManagerPersonId等于p2.PersonId
新选择
{
    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)=>新
                   {
                       公司= C,
                       AccountCoordinator = p.FirstName +''+ p.Surname
                   })
             。加入(dbo.Persons,
                   C => c.Company.AccountManagerPersonId,
                   P2 => p2.PersonId,
                   (C,P2)=>新
                   {
                       c.Company.CompanyId,
                       c.Company.CompanyName,
                       c.AccountCoordinator,
                       的AccountManager = p2.FirstName +''+ p2.Surname
                   });

I've got the basics of LINQ-to-SQL down, but I've been struggling trying to get JOINs to work properly. I'd like to know how to convert the following to LINQ-to-SQL (ideally using method chaining, as that is my preferred format).

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

解决方案

Using query syntax:

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
}

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

这篇关于如何转换在SQL多个内部连接到LINQ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆