假设这是我在SQL Server中的表TicketUpdate
,其中包含一些数据:
_______________________________
| Id | TicketId | Description |
-------------------------------
| 1 | 5 | desc1 |
| 2 | 6 | desc2 |
| 3 | 5 | desc3 |
| 4 | 5 | desc4 |
| 5 | 6 | desc5 |
我想使用TicketId = 5
使用Petapoco
检索最后一行。
有几种方法可以检索像FirstOrDefault
这样的单行,如下所示:
db.FirstOrDefault<TicketUpdate>("select * from TicketUpdate where TicketId = 5");
但是使用此语句,它将返回值为TicketId = 5
的第一行,其描述为desc1
。
我的问题是如何检索LastOrDefault
值呢? Petapoco没有这样的方法。
其他信息
暂时我可以通过嵌套查询
来检索TicketId = 5
的最后一行
select *
from TicketUpdate
where Id = (select MAX(Id) from TicketUpdate where TicketId = 5)
但是有没有方法或更好的方法来查找最后一行,就像我们使用FirstOrDefault
方法检索第一行而不嵌套查询一样?
答案 0 :(得分:3)
如评论中所述,您应该能够先对数据进行排序。 尝试这样的事情:
db.FirstOrDefault<TicketUpdate>("select TOP 1 * from TicketUpdate where TicketId = 5 orderby [Id] desc");
只要Id
递增,就应该返回为TicketId == 5
添加的最后一项。
答案 1 :(得分:1)
更改您的查询以获取ID为max
的最后一条记录。此外,您还需要使用Top 1
来获取一条记录。
select Top 1 * from TicketUpdate where TicketId = 5 order by ID desc