我有两个具有多对多关系的实体POCO实体,例如
public class Employee
{
public int Id;
public string Name;
public virtual ICollection<Organization> Organizations {get;set;}
}
public class Organization
{
public int Id;
public string Name;
public virtual ICollection<Employee> Employees {get;set;}
}
我想使用LINQ获取Employee.Name,Employee.Id,OrganizationID。 它会重复员工的数据,但我很乐意。我应该如何为此编写LINQ to EF。
答案 0 :(得分:1)
var query = from e in context.Employee
from o in e.Organizations
select new
{
EmployeeName = e.Name,
EmployeeId = e.Id,
OrganizationId = o.Id
}
答案 1 :(得分:0)
按照上面的结构,你应该在其中一个表中有外键。因此,不需要同时使用两个实体对象,只需使用其中一个的外键可用,并获得其他实体的Icollection对象。
如果员工拥有组织的外键,那么您可以执行以下操作:
var objEmp = context.Employee;
因此,您将获得objEmp中的整个Employee实体以及您希望使用组织实体的任何地方,您将获得Icollection of Organization,因为您通过以下方式拥有多对多的关系:
var objOrg = objEmp.Organisations;
您可以使用FirstOrDefault()或SingleOrDefault()方法使用lambda表达式检索上述查询中的第一个或一个记录。