如何使用LINQ从表中获取上次插入的行?

时间:2017-07-13 15:25:11

标签: c# asp.net-mvc linq

员工

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

Depid | DepartmentName |状态| EMPID
1 ---------------账户--------- 1 --------- 1
2 --------------- HR ---------------- 1 --------- 1
3 ---------------金融---------- --------- 1 2
4 ---------------设计----------- 1 --------- 2

这里我有两个表Employee和Department。一个员工可以在不同的部门,例如两个部门的empid = 1,即账户和hr同样empid =两个部门中的2个,即财务和设计。
现在,例如,因为empid = 1被插入depid = 1并且depid = 2但是我试图得到depid = 2,这是empid = 2的最后插入行。同样,对于empid = 2最后一行是depid = 4。 现在,问题是我的LINQ连接没有提供所需的输出 由于我对Linq非常感兴趣,所以将非常感谢帮助。谢谢你 以下是我的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();

3 个答案:

答案 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();

答案 1 :(得分:0)

尝试代码:

您已使用Group by或Subquery Used达到了您的结果;

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();

答案 2 :(得分:0)

这对我有用: var lastSequence = context.Periods.OrderByDescending(p => p.Id).FirstOrDefault().Sequence; 它按 Id 降序对周期表进行排序,只取一条记录,然后我选择周期表的列序列,在这种情况下,这将返回 11 Periods Table