找不到查询模式错误的实现
本文关键字:实现 错误 模式 查询 找不到 | 更新日期: 2023-09-27 18:28:26
给定
var selectedItems = listBoxControl1.SelectedItems;
var selectedItemsList = (from i in selectedItems
select i).ToList();
我收到错误
找不到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'. 未找到"选择"。 考虑显式指定 范围变量"i"。
using system.LINQ
完成
我可以使用 foreach,所以它必须实现IEnumerable
. 如果可能的话,我更喜欢使用 LINQ 而不是 foreach 来收集每个字符串。
我想获取列表框控件中每个 SelectedItem 的ToString()
值并将它们粘贴到List<string>
中。 我该怎么做?
我可以使用 foreach,所以它必须实现 IEnumerable。
这实际上不是真的,但在这里无关紧要。它确实实现了IEnumerable
,但不是IEnumerable<T>
这是LINQ的工作。
列表中实际包含哪些内容?如果它已经是字符串,则可以使用:
var selectedItemsList = selectedItems.Cast<string>().ToList();
或者,如果它是"任何对象"并且您想要调用ToString
则可以使用:
var selectedItemsList = selectedItems.Cast<object>()
.Select(x => x.ToString())
.ToList();
请注意,对 Cast
的调用是错误消息建议使用显式类型范围变量的原因 - 以 from Foo foo in bar
开头的查询表达式将转换为 bar.Cast<Foo>()...
要使 LINQ 工作,您需要一个IEnumerable<T>
,直接的 IEnumerable 是不够的。尝试:
var selectedItems = listboxControl1.SelectedItems.Cast<T> //where T is the actual type of the item
试试
var result = listBoxControl1.SelectedItems.Cast<MyItemType>().ToList();