C# 找不到查询模式错误的实现
给定 我收到错误消息 找不到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'。 找不到“选择”。考虑显式指定 范围变量“i”C# 找不到查询模式错误的实现,c#,linq,C#,Linq,给定 我收到错误消息 找不到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'。 找不到“选择”。考虑显式指定 范围变量“i” 使用system.LINQ完成 我可以使用foreach,因此它必须实现IEnumerable。如果可能的话,我更喜欢使用LINQ over foreach来收集每个字符串 我想获取列表框控件中每个SelectedItem的ToString()值,并将它们粘贴到列表
使用system.LINQ
完成
我可以使用foreach,因此它必须实现IEnumerable
。如果可能的话,我更喜欢使用LINQ over foreach来收集每个字符串
我想获取列表框控件中每个SelectedItem的ToString()
值,并将它们粘贴到列表中。我怎么做
我可以使用foreach,因此它必须实现IEnumerable
事实并非如此,但这与此无关。它确实实现了IEnumerable
,但没有实现IEnumerable
,而这正是LINQ的工作原理
名单上到底有什么?如果已经是字符串,则可以使用:
var selectedItems = listBoxControl1.SelectedItems;
var selectedItemsList = (from i in selectedItems
select i).ToList();
请注意,调用Cast
是错误消息建议使用显式类型的范围变量的原因-在bar
中从Foo Foo以开头的查询表达式将转换为bar.Cast()…
要使LINQ工作,您需要一个IEnumerable
,直接的IEnumerable是不够的。尝试:
var selectedItemsList = selectedItems.Cast<object>()
.Select(x => x.ToString())
.ToList();
var selectedItems=listboxControl1.selectedItems.Cast//其中T是项目的实际类型
试试看
var selectedItems = listboxControl1.SelectedItems.Cast<T> //where T is the actual type of the item
var result=listBoxControl1.SelectedItems.Cast().ToList();
实现foreach需要什么?@P.Brian.Mackey:一个名为GetEnumerator()
的方法,该方法被声明为返回一个具有适当MoveNext()
和当前成员的类型。它不必实现IEnumerable
。使用Current
属性为(比如)int
的类型是避免在泛型之前迭代时装箱的一种方法。只需登录向上转换此属性,foreach就可以在关键字in之后处理对象的类型,只需使用名为GetEnumerator()的方法,该方法反过来会返回具有MoveNext()类型的对象方法和当前属性。它不需要实现IEnumerable
var selectedItems = listboxControl1.SelectedItems.Cast<T> //where T is the actual type of the item
var result = listBoxControl1.SelectedItems.Cast<MyItemType>().ToList();