在 IEnumerable 上查找最后一个
我想在实现 IEnumerable
的集合上调用 FindLast
,但 FindLast
仅适用于 List
。 最好的解决方案是什么?
I would like to call FindLast
on a collection which implements IEnumerable
, but FindLast
is only available for List
. What is the best solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
相当于:(
后者
必须检查序列中的所有项,但是...)
实际上,“Where()”是查找部分,而“Last()”是分别是“FindLast”的最后部分。 同样,
FindFirst(predicate)
将映射到sequence.Where(predicate).FirstOrDefault()
,而FindAll(predicate)
将是sequence.Where(谓词)
。The equivalent to:
is
(The latter will have to check all items in the sequence, however...)
Effectively the "Where()" is the Find part, and the "Last()" is the Last part of "FindLast" respectively. Similarly,
FindFirst(predicate)
would be map tosequence.Where(predicate).FirstOrDefault()
andFindAll(predicate)
would besequence.Where(predicate)
.使用 LINQ-to-Objects 怎么样:
如果您只有 C# 2,则可以使用实用程序方法:
How about with LINQ-to-Objects:
If you only have C# 2, you can use a utility method instead:
您可以通过将集合传递给 List<> 将其添加到新列表中 构造函数。
you can add you collection to a new List by passing it to List<> constructor.
使用扩展方法 Last()
它位于命名空间 System.Linq 中。
Use the extension method Last()
which is located in the namespace System.Linq.
您的问题无效,因为集合没有最后一个元素。 具有完整排序的更专业的集合是列表。 字典是一种更专业、没有顺序的集合。
Your question is invalid because a collection has no last element. A more specialized collection that does have a complete ordering is a list. A more specialized collection that does not have an ordering is a dictionary.