EF4:在对象的IEnumerable列表上加入实体查询
本文关键字:实体 查询 列表 IEnumerable 对象 EF4 | 更新日期: 2023-09-27 17:59:38
我有两个IEnumerables:
IEnumerable<ThisEmployee> thisEmployees;
IEnumerable<ThatEmployee> thatEmployees;
它们是从两个独立的上下文中填充的。ThisEmployee和ThatTemployee的类型不匹配。除了EmployeeNumber属性外,它们没有共享任何类似的内容。
我想得到所有ThatEmployee。在该Employees中具有匹配EmployeeNumber的任何employee的注释。
我一辈子都不知道该怎么做。
您的集合来自不同的上下文,因此在linq中首先将员工的id获取到对象:
var ids = from e1 in thatEmployees
join e2 in thisEmployees on e1.EmployeeNumber equals e2.EmployeeNumber
select e1.Id;
现在使用id在单查询中从数据库中获取Notes
var notes = from n in context.Notes
where ids.Contains(n.Employee.Id)
select n;
由于它在两个不同的上下文中,请尝试使用ToList获取所有对象。然后对对象u使用Linq可以使用Where(r => thisEmployees.Any(s => s.EmployeeNumber == r.EmployeeNumber))
。不确定我是否正确理解u:)
像这样的东西怎么样
var notes = thatEmployees
.Join(thisEmployees,
ta => ta.EmployeeNumber,
ti => ti.EmployeeNumber,
(ta, ti) => ta.Notes)