限制从Linq列表中返回的结果数

我正在使用Linq / EF4.1从数据库中提取一些结果,并希望将结果限制为(X)最近的结果。 其中X是用户设定的数字。

有没有办法做到这一点?

如果这将有助于限制结果集,我目前将它们作为List传回。 虽然我可以通过循环来限制这个,直到我打到X我只是假设不传递额外的数据。

以防万一它是相关的…从SQL Server数据库运行的C#MVC3项目。

使用Takefunction

 int numberOfrecords=10; // read from user listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords) 

假设listOfItems是你的实体对象的List,而CreatedDate是一个有创builddate值的字段(在这里用来降序获取最近的项目)。

Take()函数从序列的开始处返回指定数量的连续元素。

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

 results = results.OrderByDescending(x=>x.Date).Take(10); 

OrderByDescending将通过你的date/时间属性(或你想用来获取最新的W / e逻辑)对项目进行sorting,Take将限制到第一个x项目(首先是最近的,由于sorting)。

编辑:要返回一些行不是从第一行开始,使用Skip()

 results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10); 

使用Take() ,然后转换为List。 这样EF可以优化它创build的查询,只返回你需要的数据。