员工表 主键:EmployeeID
机器类型表 主键:MachineTypeID
机器表:
主键:MachineID
外键:MachineTypeID
外键:EmployeeID
上面描述了数据库结构,我想在机器表上查询并显示以下结果。
我想知道如何编写LinqtoSql查询来实现上表..这里是加入工作。请帮助我。
答案 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 };