Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF4:在IEnumerable对象列表上连接实体查询_C#_Linq_Entity Framework_Entity Framework 4_Linq To Entities - Fatal编程技术网

C# EF4:在IEnumerable对象列表上连接实体查询

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 我一辈子都搞不懂怎么做。像

我有两个IEnumerables:

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();按照我的说法,那是行不通的