VB.NET和LINQ。我在这里错过了什么?

时间:2009-08-26 12:40:31

标签: .net asp.net vb.net linq

我正试图让this sitemap clas正常工作。

它似乎使用了我从未使用过的LINQ,但编程的一半乐趣就是学习新东西!

我的问题是我在LINQ代码中遇到编译错误。 VS只是不认识它。我有一个对system.data.linq的引用,我有一个import system.data.linq,但仍然是代码读取的地方,“Dim folders = From o In Directory.GetDirectories ......”,它告诉我“期待结束语。”

在连接这个东西时我缺少什么才能使用LINQ?我的框架是2.0.5。 LINQ在2中根本不可用吗?如果是这样,为什么我的GAC中有system.data.linq?

以下是代码:

    Private Sub AddFolders(ByVal parentNode As SiteMapNode)
Dim folders = From o In Directory.GetDirectories(HttpContext.Current.Server.MapPath(parentNode.Key)) _
Let dir = New DirectoryInfo(o) _
Where Not Regex.Match(dir.Name, ExcludedFolders).Success _
Select New ()

        For Each item In folders
            Dim folderUrl As String = parentNode.Key + item.DirectoryName
            Dim folderNode As New SiteMapNode(Me, folderUrl, Nothing, item.DirectoryName, item.DirectoryName)

            AddNode(folderNode, parentNode)
            AddFiles(folderNode)
        Next
    End Sub

谢谢你们。 Stack Overflow rocks。

4 个答案:

答案 0 :(得分:3)

Dim folders = From o In Directory.GetDirectories(HttpContext.Current.Server.MapPath(parentNode.Key)) _
Let dir = New DirectoryInfo(o) _
Where Not Regex.Match(dir.Name, ExcludedFolders).Success _
Select dir
编辑:实际上你不能在.NET 2.0中使用Linq,至少不是没有一些调整......但是,使用Linq并使用.NET 3.5编译器编译的代码可以在.NET 2.0运行时运行,使用LinqBridge

答案 1 :(得分:2)

您必须将3.5(Visual Studio 2008)定位为使用linq。

答案 2 :(得分:2)

根据this link(我没有亲自测试),您可以将LINQ与.NET 2.0一起使用。你需要Visual Studio 2008,但是......

如果可能的话,我建议你升级到.NET 3.5,除非你想等待即将发布的.NET 4.0: - )

答案 3 :(得分:2)

如果您的目标是.NET Framework 2,那么您可以通过一些额外的努力让LINQ正常工作。

让事情快速发展的最简单方法是下载LINQBridge,它为Framework 2提供LINQ实现。

至于为什么你在GAC中看到System.Data.Linq ......听起来你已经将.NET 3.5与.NET 2.0并排安装了