[英]Why can't I use LINQ on ListView.SelectedItems?
我试图做用.Select
上的扩展方法ListView.SelectedItems
这是SelectedListViewItemCollection
,但.Select
不显示在IntelliSense起来。
我可以在SelectedListViewItemCollection
上使用foreach
,因此它必须已经实现了IEnumerable
。 我刚刚在MSDN上查了一下,确实如此。 那为什么不能在它上面使用LINQ扩展方法呢?
原因是SelectedItems被输入到实现IEnumerable的集合中。 Select扩展方法绑定到IEnumerable<T>
。 因此它不适用于SelectedItems。
解决方法是使用.Cast扩展方法将其设置为适当的类型,它应该显示出来
ListView.SelectedItems.Cast<SomeType>.Select(...)
它实现IEnumerable,而不是IEnumerable<T>
- 所有LINQ查询都是围绕通用IEnumerable<T>
接口构建的,以允许类型安全和通用推理 - 特别是在处理匿名类型时。
您可以使用以下代码:
myListView.SelectedItems.Cast<ListViewItem>.Select( ... );
你在文件的顶部有“使用System.Linq”吗?
它是一个强类型的通用集合吗? 如果没有,您将需要使用Cast <>扩展方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.