LINQ中的表子查询

时间:2017-12-12 09:15:34

标签: entity-framework 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 

1 个答案:

答案 0 :(得分:0)

所以你有两个班级员工和资格。员工与资格认证之间存在一对多的关系

  • 每个Qualifcation都有零个或多个Employees
  • 每位员工只有一份资格

如果您按照default entity framework one-to-many configuration进行操作,则会有

等课程
select * from myTable where blobCol like '%example%'

这是实体框架需要知道的所有配置一对多关系。如果您有不同的属性名称,您将拥有属性或流畅的API,以通知Entity Framework其功能。

现在回到您的查询:您想要所有男性员工的姓名以及他的资格的名称和描述

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;}
 }

实体框架将为此创建正确的连接。