Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到查询模式错误的实现_C#_Linq - Fatal编程技术网

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

C# 找不到查询模式错误的实现,c#,linq,C#,Linq,给定 我收到错误消息 找不到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'。 找不到“选择”。考虑显式指定 范围变量“i” 使用system.LINQ完成 我可以使用foreach,因此它必须实现IEnumerable。如果可能的话,我更喜欢使用LINQ over foreach来收集每个字符串 我想获取列表框控件中每个SelectedItem的ToString()值,并将它们粘贴到列表

给定

我收到错误消息

找不到源类型的查询模式的实现 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection'。 找不到“选择”。考虑显式指定 范围变量“i”

使用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();