我正试图让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。
答案 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并排安装了