【问题标题】:Returning last record from database从数据库返回最后一条记录
【发布时间】:2020-01-30 16:19:27
【问题描述】:

我正在尝试显示根据数据库处理的最后一条记录,客户端有属于它们的进程。

所以客户端 1 有进程 1 和 2,我希望根据数据库中的进程表显示最后一条记录和处理时间。我想将此返回到视图并显示在表格中。

这是我迄今为止一直在尝试的:

 var robots = from h in _context.HeartBeat
                         join p in _context.ProcessTable on h.ProcessID equals p.ProcessID
                         join e in _context.EnvironmentTable on p.EnvironmentID equals e.EnvironmentID
                         join c in _context.ClientTable on e.ClientID equals c.ClientID
                         select new DashViewModel
                         {
                             processName = p.ProcessID,
                             environmentName = e.EnvironmentName,
                             LastRunTime = h.RecordFinish
                         };


            IEnumerable<DashViewModel> robo = robots.ToList<DashViewModel>();

这会从数据库中选择所有进程。有数千个,所以这并不理想。

【问题讨论】:

  • 如果您只需要 1 条记录 - 按日期(处理结束)或某个 id(如果它是自动增量)按降序排列记录并获取第一条记录
  • @demo 我如何在 linq 中执行此操作?
  • 这是orderby descending stackoverflow.com/a/24289779/3917754 的示例,然后只需使用.FirstOrDefault() 或仅使用.First()

标签: c# .net linq asp.net-core


【解决方案1】:

假设您使用的是 EF Core,您可以使用:

var last = robots.Last();

获取最后一条记录。或者

var last3 = robots.TakeLast(3).ToList();

从结尾处得到一个特定的数字。 您可能想用.OrderBy(r =&gt; r.Id) 或其他东西强制进行某种排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2018-02-27
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多