【问题标题】:How To Get Last Inserted Row From Table Using LINQ?如何使用 LINQ 从表中获取最后插入的行?
【发布时间】:2017-12-18 11:57:40
【问题描述】:

员工

Empid |员工姓名
1-------------罗恩
2------------约翰

部门

胆怯|部门名称 |状态| 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();

【问题讨论】:

  • 如何通过你的数据(哪一列)知道最后插入了什么?
  • @GiladGreen DepId = 2 和 DepId = 4。
  • 但是如果不是按照表格中的顺序你怎么知道呢?
  • 您现在应该忽略 LINQ。转到您的 SSMS 或您使用的任何工具,然后从那里运行您的查询。如果您可以从那里获得输出,那么您可以将其转换为代码。如果您查看之前的 cmets,实质上每个人都在告诉您检查您的数据模型。您是否要获取员工所在的当前部门?
  • 您好,欢迎来到 Stack Overflow,请花点时间通过 welcome tour 了解您在此处的方式(并获得您的第一个徽章),阅读如何创建 Minimal, Complete, and Verifiable example并检查How to Ask Good Questions,这样您就有机会获得反馈和有用的答案。

标签: c# asp.net-mvc linq


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试代码:

    您已经使用 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();
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 先生,我如何使用您建议的 Linq 返回列表中的数据
      • 您不仅想要“最后插入行”吗?可能我理解错了。
      • 这个查询只返回一个值不能返回列表
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2015-08-25
      • 2019-11-21
      • 2014-09-10
      • 1970-01-01
      相关资源
      最近更新 更多