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

时间:2010-01-15 18:14:52

标签: 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

然而,编译器正在咆哮我,告诉我

“'x'在此上下文中无法访问,因为它是'朋友'。”

任何人都知道我在这里做错了吗?

提前致谢。

3 个答案:

答案 0 :(得分:5)

挖掘挖掘后,我终于找到了这个问题的答案。谈论迟钝!

  

在.NET Framework 3.5项目中启用LINQ

     

将项目移动到.NET时   框架3.5,参考   System.Core和项目级导入   for System.Linq(仅在Visual Basic中)   自动添加。 如果你想   要使用LINQ功能,还必须使用   打开选项推断(在Visual Basic中)   只有) [我的重点]。

当我将目标框架从2.0更改为3.5时,Visual Studio会自动添加System.Core程序集,并自动导入System.Linq命名空间。现在为什么世界上也没有将Option Infer设置为“On”?

http://msdn.microsoft.com/en-us/library/bb398197.aspx

答案 1 :(得分:2)

在我看来,之前声明了变量x - 作为类字段,方法参数或局部变量。

我是对的吗?

答案 2 :(得分:1)

我不确定你是否已经解决了这个问题。我今天遇到了完全相同的问题,最终为我工作的是在For Each循环中不使用单字母变量。我的代码和你的代码一样:

For Each x In a
 ...
Next

当我将代码更改为以下代码时,它起作用了:

For Each retVal in a
 ...
Next

我还发现任何单字母变量都有相同的'Friend'错误行为。

我不知道它为什么会这样,但我想我会把这个问题传递给我,以防这个问题仍然存在。