【问题标题】:How to select only the last entry from sql table using linq entity如何使用 linq 实体仅从 sql 表中选择最后一个条目
【发布时间】:2021-12-12 10:21:07
【问题描述】:

我有一个表格,我们存储在会议期间在屏幕上显示的公告会议 ID,现在我的雇主希望我添加一个按钮,该按钮可以向所有会议室发送公告,而不管房间 ID,我将此类公告保存在在名称 IsAll 下具有 true 或 false 位值的表,所以现在我想知道的是,如何仅选择表中 Isall 值设置为 true 的最后一个条目

ID | roomid     | announcement | IsAll
 1 |     1      |    example   |  ....
 2 |     10     |    test      |  true

在这种情况下,我想获得 id 为 2 的公告

ID | roomid     | announcement | IsAll
 1 |     1      |    example   |false
 2 |     10     |    test      |  true
 3 |     10     |    test      |  false

在这种情况下,我不希望 SQL 从表中返回任何内容,而我尝试过这样做

            var msg = db.Broadcasts.Where(x => x.IsAll == true).OrderByDescending(x => x.Id).FirstOrDefault();

但它总是返回一个不是最优的值,我该如何实现呢?谢谢

【问题讨论】:

  • 值不是最优是什么意思?
  • 对不起,我只是说在第二种情况下,查询一定不能返回任何公告文本,如果最后有一个 IsAll 设置为 true 的条目,我只需要返回跨度>
  • 那么您是说要检查最后一条记录,并且仅在 IsAll 为真时才返回该记录?
  • 是的,你是对的

标签: sql entity-framework linq-to-entities


【解决方案1】:

所以您需要做的就是选择最后一项并检查 IsAll 值是否为真;

public Broadcast GetLastGlobalMessage()
{
  var lastBroadcast = db.Broadcasts.OrderByDescending(x => x.Id).FirstOrDefault();
  if(lastBroadcast !=null && lastBroadcast.IsAll)
    return lastBroadcast;

  return null;
}

【讨论】:

  • 非常感谢您的回答,您让我的工作轻松了很多。
猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多