我不确定这是否可以完成,但这是场景。
我想把这个sql变成linq:
SELECT * FROM Department d
INNER JOIN Employee e ON e.DepartmentID = d.DepartmentID
部门 - 员工是一对多的关系。
我创建了一个自定义对象,我想将结果填充到其中。
public class DepartmentSummary
{
public Department Department { get; set; }
public List<Employee> Employees {get; set;}
}
我想出的 Linq 是
var result = from d in dba.Department
join e in dba.Employee d.DepartmentID equals e.DepartmentID into j1
select new DepartmentSummary
{
Department = d,
Employees = j1.ToList()
};
我试过了,它不起作用。任何人都可以为我提供一些帮助吗?我想在部门和员工之间执行内部连接。对于结果集中的每个部门,我想创建一个 DepartmentSummary 对象,其中包含该部门和属于该部门的员工列表。
Linq 是否为此提供了临时解决方案,还是我必须遍历结果集并手动创建 DepartmentSummary 列表?
谢谢,
编辑:
看起来这对我有用
var result = from d in dba.Department
join e in dba.Employee d.DepartmentID equals e.DepartmentID into j1
where j1.Count() > 0
select new DepartmentSummary
{
Department = d,
Employees = j1.ToList()
};
最佳答案
听起来您正在寻找解决延迟加载的问题?
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Department>(d => d.Employees);
using (var dba = new MyDataContext())
{
dba.LoadOptions = dlo;
var result = from d in dba.Department
select d;
}
现在,如果您没有在 Department 和 Employees 之间定义关系(如果您设置了数据库关系,Linq2Sql 设计器将为您执行此操作),那么您应该考虑这样做。它使这一切变得更加容易。事实上,您甚至不需要您的广告系列摘要。
关于c# - Linq to Sql - 将 JOIN 结果填充到列表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1580199/