C# EF4:在IEnumerable对象列表上连接实体查询
我有两个IEnumerables:C# EF4:在IEnumerable对象列表上连接实体查询,c#,linq,entity-framework,entity-framework-4,linq-to-entities,C#,Linq,Entity Framework,Entity Framework 4,Linq To Entities,我有两个IEnumerables: IEnumerable<ThisEmployee> thisEmployees; IEnumerable<ThatEmployee> thatEmployees; i员工人数; i雇员人数; 它们由两个独立的上下文填充。此员工和该员工的类型不匹配。除了EmployeeNumber财产外,他们不共享任何类似的东西 我想获取所有该雇员的笔记。该雇员中任何雇员的笔记,该雇员中有匹配的EmployeeNumber 我一辈子都搞不懂怎么做。像
IEnumerable<ThisEmployee> thisEmployees;
IEnumerable<ThatEmployee> thatEmployees;
i员工人数;
i雇员人数;
它们由两个独立的上下文填充。此员工和该员工的类型不匹配。除了EmployeeNumber财产外,他们不共享任何类似的东西
我想获取所有该雇员的笔记。该雇员中任何雇员的笔记,该雇员中有匹配的EmployeeNumber
我一辈子都搞不懂怎么做。像这样的事情怎么样:
var notes = thatEmployees
.Join(thisEmployees,
ta => ta.EmployeeNumber,
ti => ti.EmployeeNumber,
(ta, ti) => ta.Notes)
因为它在两种不同的上下文中尝试使用ToList来获取所有对象。然后使用Linq访问对象,您可以使用
其中(r=>thisEmployees.Any(s=>s.EmployeeNumber==r.EmployeeNumber))
。不确定我是否正确理解了u:)您的集合来自不同的上下文,因此在linq to objects中首先获取员工ID:
var ids = from e1 in thatEmployees
join e2 in thisEmployees on e1.EmployeeNumber equals e2.EmployeeNumber
select e1.Id;
现在,使用id在单个查询中从数据库中获取注释
var notes = from n in context.Notes
where ids.Contains(n.Employee.Id)
select n;
我认为可以使用LINQ join查询,因为它支持
IEnumerable
我的实现使用了这种语法,我对这种语法比较熟悉,但想法完全相同。谢谢var selected=(来自ta中的ta,员工在ta中加入ti。用户名等于ti。用户名选择ta)。ToList();按照我的说法,那是行不通的