使用Linq中的orderby子句获取单个值

时间:2013-12-18 11:28:47

标签: c# linq entity-framework

您好我是LINQ的新手,我想在LINQ中实现以下查询:

select top 1 Registrationid from registration order by datemodified desc

通过上述查询,我​​想返回最新更新的registrationid。

任何人都可以告诉我上面的查询的语法写在 LINQ

感谢。

更新

var result = _dbcontext.Registrations.OrderByDescending(x => x.DateModified);

我尝试了更多的语法,但最后上面似乎更适合我,但是使用上面的语法我无法获得单个排序 registrationid

1 个答案:

答案 0 :(得分:0)

你几乎做到了。只需添加FirstOrDefault即可从数据库中选择TOP 1实体。在按日期对其进行排序后,使用Select生成项目结果:

var result = _dbcontext.Registrations
                       .OrderByDescending(x => x.DateModified)
                       .Select(x => x.RegistrationId) // select only id field
                       .FirstOrDefault(); // top 1

如果没有注册,此查询将返回最新注册ID或默认值(整数0)。

生成的SQL将如下所示:

SELECT TOP (1) 
[Extent1].[RegistrationId] AS [RegistrationId]
FROM [dbo].[Registrations] AS [Extent1]
ORDER BY [Extent1].[DateModified] DESC