Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Vb.net 简单的LINQ问题-如何遍历组?_Vb.net_Linq - Fatal编程技术网

Vb.net 简单的LINQ问题-如何遍历组?

Vb.net 简单的LINQ问题-如何遍历组?,vb.net,linq,Vb.net,Linq,我需要一些关于VB.Net中LINQ查询的帮助 我有一个简单的团体声明: Dim drivers = From d In DriversOwners _ Group d By Key = d.UnitNumber Into Group _ Select Key, DriverGroup = Group 这是可行的,并返回我需要处理的数据。现在,我想使用For-Each构造遍历这些组。像这样: For Each x In drivers Next 然而,编译器对我咆哮,告诉我 “

我需要一些关于VB.Net中LINQ查询的帮助

我有一个简单的团体声明:

Dim drivers = From d In DriversOwners _
   Group d By Key = d.UnitNumber Into Group _
   Select Key, DriverGroup = Group
这是可行的,并返回我需要处理的数据。现在,我想使用For-Each构造遍历这些组。像这样:

For Each x In drivers

Next
然而,编译器对我咆哮,告诉我

“'x'在此上下文中不可访问,因为它是'Friend'。”

有人知道我做错了什么吗


提前感谢。

在我看来,变量x是先前声明的-作为类字段、方法参数或局部变量


我说得对吗?

我挖了又挖,终于找到了这个问题的答案。谈谈迟钝

在.NET Framework 3.5项目中启用LINQ

将项目移动到.NET时 框架3.5,参考 核心和项目级导入 对于System.Linq(仅在Visual Basic中) 自动添加。如果你愿意 要使用LINQ功能,还必须 启用选项推断(在Visual Basic中 只是[我的重点]

当我将目标框架从2.0更改为3.5时,VisualStudio自动添加System.Core程序集,并自动导入System.Linq命名空间。现在,为什么在世界上它也没有设置选项推断为“开”


我不确定你是否解决了这个问题。今天我遇到了完全相同的问题,最终对我有效的是在for-Each循环中不使用单个字母变量。我的代码与您的代码相同:

For Each x In a
 ...
Next
当我将代码更改为以下代码时,它起了作用:

For Each retVal in a
 ...
Next
我还发现任何单个字母变量都有相同的“Friend”错误行为


我不知道它为什么会这样,但我想如果这个问题仍然存在的话,我会把它传递出去。

没有-我故意用了“x”,因为它在其他任何地方都不使用。事实上,不管我用哪个字母变量来代替“x”,我都会得到同样的错误。当我尝试用“foo”之类的词来替换“x”时,我得到了一个不同的错误:“没有声明名称‘foo’”。出于好奇,您能否将for each line更改为“for each x As Object In drivers”,看看这是否会给您带来错误?我复制了你的代码的一个简单版本,并使用了你提供的确切LINQ语句,但无法使它引发错误。当然,这是可行的,但除了五个左右的默认对象方法外,我不能对对象执行任何操作。看起来我可能缺少一个程序集引用或其他东西。这是一个.NET2.0项目,我将其更改为目标.NET3.5。我添加了所有LINQ引用,但仍然有一些地方似乎不正确。我添加了另一个从MS示例页面复制的LINQ查询,它给了我一个错误:“Object”类型的表达式不可查询。确保没有缺少LINQ提供程序的程序集引用和/或命名空间导入。但是我已经添加了所有的引用-System.Core、System.Data.Linq、System.XML.Linq。。。我还把所有的Imports语句放在了类的顶部。。。我在这里发牢骚。恭喜你解决了你的问题。在回答您的问题时,请参阅此处的注释,其中说明“如果您未指定“开”或“关”,则Visual Basic 2008中创建的项目的默认设置为“开”。从早期版本升级的项目的默认设置为“关”。我认为这解决了问题,但没有。原始问题仍然存在。谢谢,Ahmad,感谢。谢谢,这也是我最后做的。我会把你的答案标记为正确答案,因为这是我唯一能让代码正常工作的方法。