C# 在实体框架中的Join语句中使用Include语句功能
我对两个类似这样的实体进行了linq查询C# 在实体框架中的Join语句中使用Include语句功能,c#,.net,entity-framework,C#,.net,Entity Framework,我对两个类似这样的实体进行了linq查询 IQueryable<Employee> employees = CreateObjectSet<Employee>().AsQueryable(); IQueryable<Department> depts = CreateObjectSet<Department>().AsQueryable(); var result = (from employee in employees
IQueryable<Employee> employees = CreateObjectSet<Employee>().AsQueryable();
IQueryable<Department> depts = CreateObjectSet<Department>().AsQueryable();
var result = (from employee in employees
join dept in depts
on emp.DeptID equals dept.ID
select employee
var result = (from employee in employees
join dept in depts
on emp.DeptID equals dept.ID
**** employee.Dept=dept ****
select employee
我不想设置Employee类的所有属性并因此返回新对象,请告诉我一些更好的方法
谢谢难道你不能用“让”这个词作为攻击吗
var result = (from employee in employees
join dept in depts
on employee.DeptID equals dept.ID
let notUtile = employee.Dept=dept
select employee);
我的理解是,您希望选择所有员工及其部门(如果我错了,请纠正我)。如果您有导航属性,则根本不需要联接。您可以像这样使用
Include
:
List<Employee> employeesWithDepartments = CreateObjectSet<Employee>().
Include(e => e.Department).
ToList();
List employeesWithDepartments=CreateObjectSet()。
包括(e=>e.Department)。
托利斯特();
它在itarg上带有“let”关键字的行上给出错误“表达式树不包含赋值运算符”。您能定义employee.SetDept(dept)功能吗?(然后在let语句中使用它)哦。。。我没有意识到您的查询是在实体框架集上进行的。我很抱歉你不能这样做,因为“select”和“update”语句在SQL中不兼容。所以,没有办法做到这一点?只有一个请求-这是select!-?我对此表示严重怀疑:-/不,我的实际查询非常复杂,包含多个表,因此需要联接,您的方向是正确的,我需要类似“include”的内容,但我需要在“联接”上下文中使用它。我将重复:如果您有导航属性,则不需要联接。您可以将实际查询添加到问题中,我可以看看如何将包含添加到问题中。是的,我会检查和交叉检查,我需要的所有内容都在导航属性中,如果我需要具有特定EmployeeIDGood的员工,我是否应该使用where子句,然后您可以使用包含。是的,你可以使用where,例如,objectSet.Include(e=>e.Department)。where(e=>e.Id==yourId)
还有两件事,一件是我很笨,另一件是你很棒。谢谢