2013-10-09 271 views
-1

EMPLOYEE表 主键:雇员 enter image description hereLinqtoSql查询在这种情况下

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

机表:
主键:机号
外键:MachineTypeID
外键:雇员

以上,现在我想在机台上查询,并显示以下结果

enter image description here

数据库结构。 enter image description here
我想知道如何编写LinqtoSql查询来实现上面的表..是连接工作在这里。请帮助我。

+1

迄今为止的努力? –

+0

@SonerGönül陷入逻辑。 – james

+1

@james逻辑在原生'sql查询'中是相同的。顺便说一句,你听说过'导航属性'吗?它将部分替换传统SQL查询中的“Join”操作。 –

回答

1

如果您DB/Object Context命名上下文,如果你还没有在实体导航(如景景说你的问题如下图),就可以形成一个多连接查询:

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