繁体   English   中英

为什么我不能在ListView.SelectedItems上使用LINQ?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM