找不到查询模式错误的实现

本文关键字:实现 错误 模式 查询 找不到 | 更新日期: 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();