-1

员工表 主键:EmployeeID 在此处输入图像描述

机器类型表 主键:MachineTypeID 在此处输入图像描述

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

在此处输入图像描述

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

4

3 回答 3

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 };
于 2013-10-09T10:23:54.170 回答
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
            });
于 2013-10-09T10:21:13.517 回答
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
    }
 );
于 2013-10-09T10:21:24.333 回答