鉴于
var selectedItems = listBoxControl1.SelectedItems;
var selectedItemsList = (from i in selectedItems
select i).ToList();
我收到错误
无法找到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'。 找不到“选择”。考虑明确指定的类型 范围变量'i'。
using system.LINQ
完成
我可以使用foreach,因此必须实现IEnumerable
。如果可能的话,我更喜欢使用LINQ over foreach来收集每个字符串。
我想在列表框控件中为每个SelectedItem获取ToString()
值,并将它们粘贴在List<string>
中。我该怎么办?
答案 0 :(得分:14)
我可以使用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>()...
答案 1 :(得分:7)
要使LINQ工作,你需要IEnumerable<T>
,直接IEnumerable是不够的。尝试:
var selectedItems = listboxControl1.SelectedItems.Cast<T> //where T is the actual type of the item
答案 2 :(得分:1)
尝试
var result = listBoxControl1.SelectedItems.Cast<MyItemType>().ToList();