我正在使用 Linq/EF4.1 从数据库中提取一些结果,并希望将结果限制为 (X) 最近的结果。其中 X 是用户设置的数字。
有没有办法做到这一点?
我目前将它们传回,List
好像这将有助于限制结果集。虽然我可以通过循环来限制这一点,直到我点击 X 我只是假设不传递额外的数据。
以防万一它是相关的...从 SQL Server 数据库运行的 C# MVC3 项目。
我正在使用 Linq/EF4.1 从数据库中提取一些结果,并希望将结果限制为 (X) 最近的结果。其中 X 是用户设置的数字。
有没有办法做到这一点?
我目前将它们传回,List
好像这将有助于限制结果集。虽然我可以通过循环来限制这一点,直到我点击 X 我只是假设不传递额外的数据。
以防万一它是相关的...从 SQL Server 数据库运行的 C# MVC3 项目。
使用Take
功能
int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)
假设listOfItems
是您的实体对象的列表,并且CreatedDate
是一个具有创建日期值的字段(此处用于按降序进行排序以获取最近的项目)。
Take() 函数从序列的开头返回指定数量的连续元素。
results = results.OrderByDescending(x=>x.Date).Take(10);
将按您的OrderByDescending(...)
日期/时间属性(或您想要用于获取最新的 w/e 逻辑)对项目进行排序,Take(...)
并将限制为前 x 个项目(首先是最新的,这要归功于排序)。
编辑:要返回一些不是从第一行开始的行,请使用Skip()
:
results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);
Take()
在转换为列表之前使用,。这样 EF 可以优化它创建的查询并只返回您需要的数据。