代码之家  ›  专栏  ›  技术社区  ›  camainc

简单的LINQ问题-如何迭代一个组?

  •  2
  • camainc  · 技术社区  · 16 年前

    我需要一些有关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”,因此在此上下文中不可访问。

    有人知道我在这里做错了什么吗?

    事先谢谢。

    3 回复  |  直到 16 年前
        1
  •  1
  •   bcarroll2k3    16 年前

    我不确定你是否解决了这个问题。今天我有一个完全相同的问题,对我来说,最终解决的问题是不要在for each循环中使用单个字母变量。我的代码和你的一样:

    For Each x In a
     ...
    Next
    

    当我将代码更改为以下代码时,它工作正常:

    For Each retVal in a
     ...
    Next
    

    我还发现任何单个字母变量都有相同的“friend”错误行为。

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

        2
  •  5
  •   camainc    16 年前

    经过挖掘,我终于找到了这个问题的答案。说说笨蛋!

    在.NET Framework 3.5项目中启用Linq

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

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

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

        3
  •  2
  •   Christian Madsen    16 年前

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

    我说得对吗?