使用lambda查询获取前5个值

时间:2013-03-30 07:52:18

标签: c# asp.net sql-server linq

这是我的代码,

rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .ToList();  

我从lambda中获取数据库中的公告数据,并将此数据绑定到ASP.NET转发器(rptAnnouncement)。

但是这个查询会返回所有数据,我只想获得前5个(前5个)记录,比如MS SQL Server' select top 5 * from database

3 个答案:

答案 0 :(得分:49)

您可以使用OrderBy()对元素进行排序,然后Take()使用前5个。

rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .OrderBy(n => n.Expire_Date.Value.Date)
    .Take(5);

备注

答案 1 :(得分:5)

如果您只想要前5名,那么您可以使用以下内容。

rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();

此处有更多详情

http://msdn.microsoft.com/en-us/library/bb503062.aspx

答案 2 :(得分:2)

只需在Take(n)

中使用LINQ即可
rptAnnouncement.DataSource = DbContext.Announcements
                                      .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
                                      .Take(5).ToList();