首页 / C# / c# – 使用LINQ选择n最大
c# – 使用LINQ选择n最大
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用LINQ选择n最大,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1135字,纯文字阅读大概需要2分钟。
内容图文
![c# – 使用LINQ选择n最大](/upload/InfoBanner/zyjiaocheng/754/f7f1e609ea514f3586ca0cbe2d75b8bb.jpg)
这可能是一个关于LINQ的新手问题,但假设我有一组具有DateTime属性的Items,一个日期最多只有一个项目,我将如何从引用日期中选择N个最新项目,即N个项目的日期小于请求日期和最大日期?
我天真的想法是首先选择日期小于参考日期的项目,按日期排序,然后从该子集中选择N个第一项.
var recentItems = from item in dataContext.Items
where item.Date<=date
orderby item.Date descending
select item;
var mostRecentItems = recentItems.Take(5).ToList();
这是“正确”的方式,还是有更好的方法来实现我的目标?
解决方法:
是的,这是正确的方法.从那里的dataContext一词来判断,我假设这是Linq to SQL代码;它将变成一个有效的TOP N查询.
(好吧,只要数据按日期索引,就“有效”.)
我可能改变的一件事是删除ToList().除非你真的需要它作为一个列表,否则通常最好不要将其作为IEnumerable< T>,特别是如果你只需要迭代它而不是通过索引获取元素.
编辑:我应该更好地参考ToList来限定我的意思.当您调用ToList时,您最终会得到一个包含该集合中所有元素的内存结构.这会耗尽您并不总是需要使用的内存.创建列表还需要对所有记录进行完整迭代,因此如果您稍后迭代列表本身,则您已经遍历了每个元素两次.
只有5个元素,差异可能不明显;然而,对于5000个元素,它可能非常重要.因此,你应该养成不使用ToList()的习惯,除非你确定你需要它.大多数时候,你没有.
内容总结
以上是互联网集市为您收集整理的c# – 使用LINQ选择n最大全部内容,希望文章能够帮你解决c# – 使用LINQ选择n最大所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。