LinqtoSql查询在此方案中

时间:2013-10-09 10:16:46

标签: c# linq linq-to-sql

员工表 主键:EmployeeID enter image description here

机器类型表 主键:MachineTypeID enter image description here

机器表:
主键:MachineID
外键:MachineTypeID
外键:EmployeeID

enter image description here

上面描述了数据库结构,我想在机器表上查询并显示以下结果。 enter image description here
我想知道如何编写LinqtoSql查询来实现上表..这里是加入工作。请帮助我。

3 个答案:

答案 0 :(得分:1)

以下内容将帮助您入门:

这使用navigation properties代替joins

var result = context.Machines.Where(x => x.EmployeeID == 3)
            .Select(v => new 
            { 
                v.MachineID, // from Machines table
                v.MachineTypes.MachineType, // from MachineTypes table
                v.Employees.EmployeeName, // from Employees table
                v.Price, // from Machines table
                v.Make, // from Machines table
                v.Year // from Machines table
            });

答案 1 :(得分:1)

var result = Machine
.Join
(
    MachineType,
    x=>x.MachineTypeID,
    x.MachineTypeID,
    (m,mt)=>new
    {
        m.MachineID,
        m.EmployeeID,
        m.Price,
        m.Make,
        m.Year,
        mt.Type
    }
)
.Join
(
    Employee,
    x=>x.EmployeeID,
    x=>x.EmployeeID,
    (m,e)=>new 
    {
        m.MachineID,
        MachineType = m.Type,
        Employee = m.EmployeeName,
        m.Price,
        m.Make,
        m.Year
    }
 );

答案 2 :(得分:1)

如果您有DB/Object Context命名上下文,并且如果您没有实体导航(如 King King 在您的问题下面所示),您可以形成多连接查询:

var result = 
from m  in context.Machine
join mt in context.MachineType on m.MachineTypeID equals mt.MachineTypeID
join e  in context.Employee    on m.EmployeeID    equals e.EmployeeId
select new { m.MachineID, mt.Type, e.EmployeeName, m.Price, m.Male, m.Year };