【发布时间】:2010-08-01 16:34:02
【问题描述】:
我有下面的代码构建一个集合并返回它按属性排序
var appChanges = GetHistory().ToList();
return appChanges.OrderByDescending(r => r.Change.When);
我希望它最多只返回 50 个项目(如果集合大小小于 50,则返回总数)
我如何在 LINQ 中做到这一点?
【问题讨论】:
标签: linq collections
我有下面的代码构建一个集合并返回它按属性排序
var appChanges = GetHistory().ToList();
return appChanges.OrderByDescending(r => r.Change.When);
我希望它最多只返回 50 个项目(如果集合大小小于 50,则返回总数)
我如何在 LINQ 中做到这一点?
【问题讨论】:
标签: linq collections
您正在寻找Take。见http://msdn.microsoft.com/en-us/library/bb503062.aspx
appChanges.OrderByDescending(r => r.Change.When).Take(50);
【讨论】:
使用.Take(...) 函数。
您还可以将.Skip(..) 与它结合使用进行分页查询。
此外,如果您可以避免使用.ToList(),那么您需要避免过早使用它,因为它会评估查询并返回结果集。
【讨论】:
return appChanges.OrderByDescending(r => r.Change.When).Take(n);
【讨论】: