我使用LINQ / EF4.1拉从一个数据库中的一些成果,并希望将结果限制到(X)最近的结果。 其中X是一个数字由用户设定。
有没有办法做到这一点?
目前,我正在通过他们回来的List
,如果这将限制结果集的帮助。 虽然我可以通过循环限制,直到我打X我只是假设不通过周围的额外数据。
万一这是有关C#MVC3项目从SQL Server数据库中运行。
我使用LINQ / EF4.1拉从一个数据库中的一些成果,并希望将结果限制到(X)最近的结果。 其中X是一个数字由用户设定。
有没有办法做到这一点?
目前,我正在通过他们回来的List
,如果这将限制结果集的帮助。 虽然我可以通过循环限制,直到我打X我只是假设不通过周围的额外数据。
万一这是有关C#MVC3项目从SQL Server数据库中运行。
使用Take
功能
int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)
假设listOfItems
是你的实体对象的列表和CreatedDate
是具有日创造的价值(这里使用的下降得到最新项目做订单)的字段。
取()函数返回从序列的起始的连续元素指定数量。
http://msdn.microsoft.com/en-us/library/bb503062.aspx
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可以优化其创建的查询,只返回你所需要的数据。