我有两个IEnumerables:
IEnumerable<ThisEmployee> thisEmployees;
IEnumerable<ThatEmployee> thatEmployees;
它们来自两个不同的上下文。 ThisEmployee和ThatEmployee不匹配类型。除了EmployeeNumber属性之外,它们不会共享任何类似的内容。
我希望获得该员工中具有匹配的EmployeeNumber的员工的所有ThatEmployee.Notes。
我不能为我的生活弄清楚如何。
答案 0 :(得分:2)
您的馆藏来自不同的环境,因此首先要在员工对象中获取员工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;
答案 1 :(得分:0)
如下:
var notes = thatEmployees
.Join(thisEmployees,
ta => ta.EmployeeNumber,
ti => ti.EmployeeNumber,
(ta, ti) => ta.Notes)
答案 2 :(得分:0)
由于它在两个不同的上下文中尝试使用ToList来获取所有对象。然后使用Linq到Objects你可以使用Where(r => thisEmployees.Any(s => s.EmployeeNumber == r.EmployeeNumber))
。不确定我是否理解正确:)