2012-12-14 50 views
0

我的模型 - 员工Linq查询阶段

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

,所以我将有将有许多EmployeeAudits因为这样的员工 -

员工
id -----名称
1 ------鲍勃
2 ------吉姆
3 ------希拉

审计
EMPID --- auditcode ----- ------------ datecreated
1 --------- created --------------------- 13/12/12
2 --------- created --------------------- 13/12/12
3 --- ------ created --------------------- 13/12/12
2 ----- ---- SubmittedToHR ----------- 13/12/12
3 --------- SubmittedToHR ----------- 13/12/12
3 --------- PassedForVerification --- 13/12/12


这些审计表示在过程的某一阶段,如何查询使用LINQ到在员工所在的过程中显示 。

例如,我想显示在SubmittedToHr但已创建,而不是PassedForVerification的所有员工。

+1

那么,什么是你的问题吗? – ryadavilli

+0

你有什么尝试? –

回答

0

这个查询将返回所有员工,其中有去年审计码等于SubmittedToHR(假设审计码只能从创建> 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; 
+0

感谢Lazyberezovsky的回复。 – Tappies

+0

我会试试这个,让你知道我是如何得到的。我对整个.net/mvc/c#/ linq场景很陌生,所以仍然试图找到我的脚。 – Tappies

+0

@ user1903548没问题。这是你需要的吗?如果审计代码分配不连续,则应更改查询以设置附加条件。 –