我的employee.dbml中有3个相关的表
Emp dept Zone
empId deptID ZoneID
empName deptName ZoneType
empage deptID
empzone
deptID
现在如何通过在linQ
中的查询中传递empid来获取ZoneType请帮忙
答案 0 :(得分:3)
根据您的描述,您不需要加入Dept表。
此外,这将返回IEnumerable,因此如果您想要单个值,则需要适当地处理不返回任何结果或多个结果的情况。
int empid = GetEmpId();
var query =
from e in db.Emp
join z in db.Zone on e.deptId equals z.deptId
where e.empid == empid
select z.ZoneType;
答案 1 :(得分:0)
我认为如果我正确理解你的表,我们应该这样做:
var result = (
from e in dbContext.Emp
join zone_join in dbContext.Zone
on e.deptID equals zone_join.ZoneID
where e.empId == YourEmpID
select zone_join.ZoneType).SingleOrDefault();
答案 2 :(得分:0)
我不清楚Dept
在这里扮演的角色;如上所述,似乎Emp
可以在不使用Zone
作为中间人的情况下加入Dept
。
// these could be Tables in a DataContext
IEnumerable<Emp> emps;
IEnumerable<Zone> zones
var result = (from e in emps
join z in zones on e.deptId equals z.DeptId
where e.empId == employeeID
select z.ZoneType).Single();
也许您认为Dept
有一个名为ZoneID
的列?然后你会说:
// these could be Tables in a DataContext
IEnumerable<Emp> emps;
IEnumerable<Dept> depts;
IEnumerable<Zone> zones;
var result = (from e in emps
join d in depts on e.deptId equals d.deptId
join z in zones on d.ZoneID equals z.ZoneID
where e.empId == employeeId
select z.ZoneType).Single();
由于你的问题含糊不清,我无法给你一个确定的答案,但上述内容足以指出你正确的方向。如果没有,请随时发表评论,要求澄清。