0

我的模型是 - 员工

public class Employee
{
    public int EmployeeId { get; set; }
    public string GivenName { get; set; }
    public string Surname { get; set; }
    public virtual ICollection<EmployeeAudit> EmployeeAudits { get; set; }

}

和员工审计

public class EmployeeAudit
 {
    public int EmployeeAuditId { get; set; }

    public DateTime DateCreated { get; set; }
    public string AuditCode { get; set; }

    public int EmployeeId { get; set; }
    public Employee Employee { get; set; }
}

所以我会有员工,他们会有很多员工审计 -

员工
id-----name
1------bob
2------jim
3------sheila

audit
empid---auditcode------------ ------datecreated
1---------created---------------------13/12/12
2-------- ---已创建----------13/12/12
3---------已创建--------- ------------13/12/12
2---------SubmittedToHR------------13/12/12
3----- ----SubmittedToHR-----------13/12/12
3---------PassedForVerification---13/12/12


审计代表流程中的某个阶段,我如何使用 linq 查询以显示员工在流程中的位置。

例如,我想显示在 SubmittedToHr 但已创建但未通过 PassedForVerification 的所有员工。

4

1 回答 1

0

此查询将返回最后审核代码等于 SubmittedToHR 的所有员工(假设审核代码只能从 created > SubmittedToHR > PassedForVerification 更改):

var query = from e in context.Employees
            join ea in context.EmployeeAudit 
                 on e.EmployeeId equals ea.EmployeeId into g
            where g.OrderByDescending(x => x.DateCreated)
                   .FirstOrDefault().AuditCode == "SubmittedToHR"
            select e;
于 2012-12-14T11:04:04.223 回答