[英]Table Sub Query in LINQ
如何在LINQ中编写此查询?
我要对Employee表应用子查询,因为我只需要男雇员的所有资格。
Select emp.Name, qual.Name, qual.Description
from Qualification qual
INNER JOIN ( Select emp.QualId from Employee emp where emp.Gender='Male') emp
ON qual.Id = emp.QualId
因此,您有雇员和资格两类。 员工与资格之间存在一对多关系
如果您遵循默认的实体框架一对多配置,您将拥有类似
class Qualification
{
public int Id {get; set;}
public string Name {get; set;}
public string Description {get; set;}
// a Qualification has zero or more Employees
public virtual ICollection<Employee> Employees {get; set;}
}
class Employee
{
public int Id {get; set;}
public string Name {get; set;}
public string Gender {get; set;}
// Every Employee has exactly one Qualification using foreign key
public int QualificationId {get; set;}
public virtual Qualification Qualification {get; set;}
}
这是实体框架配置一对多关系所需的全部知识。 如果您使用不同的属性名称,则将具有属性或流利的API,以告知Entity Framework其功能。
现在回到您的查询:您想要所有男性雇员的姓名以及其资格的名称和说明
var result = dbContext.Employee
.Where(employee => employee.Gender == "Male")
.Select(employee => new
{
EmployeeName = employee.Name,
QualificationName = employee.Qualification.Name,
QualificationDescription = employee.Qualification.Description,
});
实体框架将为此创建正确的联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.