2017-07-13 111 views
0

员工如何从表中使用LINQ获取最后插入的行?

Empid | EmployeeName
1 -------------罗恩
2 ------------约翰

DEPID | DepartmentName |状态| Empid
1 ---------------账户--------- 1 --------- 1
2 ------- -------- HR ---------------- 1 --------- 1
3 ----------- ----财务---------- 1 --------- 2
4 ---------------设计----- ------ 1 --------- 2

这里我有两个表员工和部门。一个员工可以在两个部门如empid = 1的不同部门即账户和hr两个部门即财务和设计中同样empid = 2。
现在,例如,因为empid = 1被插入到depid = 1和depid = 2中,但是我正在尝试获取depid = 2这是empid = 2的最后插入行。同样,对于empid = 2最后一行是depid = 4.
现在,问题是我的LINQ连接没有提供所需的输出。
因为我非常新的LINQ,帮助将是非常appreciated.Thank你

下面是我的LINQ加入

var empDepList = (from D in db.Department.Where(x => x.Status == 1) 
        join E in db.Employee on D.Empid equals E.Empid 
        select new 
        { 
        D.DepartmentName, E.EmployeeName 
        }).ToList(); 
+1

怎么通过你的数据(哪一列)你能告诉最后插入的是什么? –

+0

@GiladGreen DepId = 2和DepId = 4。 – CarrotCrop

+0

但是,如果不是按照表中的顺序,你会如何知道? –

回答

1

如果Employee.Empid是主键,粗方式做到这一点可能如下:

var empDepList = 
    (from D in db.Department 
    join E in db.Employee on D.Empid equals E.Empid 
    where D.Status == 1 
    orderby E.Empid, D.Depid descending 
    select new { 
     D.DepartmentName, E.EmployeeName 
    }).FirstOrDefault(); 
+0

先生,我如何使用您建议的Linq返回列表中的数据 – CarrotCrop

+0

您是否想要'最后一个插入行'?也许我误解了。 – tigerswithguitars

+0

此查询返回只有一个值不能返回列表 –

0

try代码:

你已经使用组通过或子查询中使用您的实现结果;

var empDepList = (from E in db.Employee     
       select { 
       DepartmentName= db.Department.where(c=>c.status==1 && c.Empid==E.Empid).LastOrDefault()==null?"":db.Department.where(c=>c.status==1 && c.Empid==E.Empid).LastOrDefault().DepartmentName, 
       EmployeeName= E.EmployeeName 
       }).ToList(); 
相关问题