2009-08-26 93 views
1

我试图让this sitemap clas工作。VB.NET和LINQ。我在这里错过了什么?

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

我的问题是,我得到LINQ代码的编译错误。 VS只是不认识它。我有一个参考system.data.linq,我有一个进口system.data.linq,但仍然在代码读取,“Dim folders = From o在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 

感谢你们。堆栈溢出岩石。

+0

Arg。我们仍然在2005年。我每周都会对它们进行窃听,我们需要升级并被忽略。至少,这对我来说是更多的弹药。 谢谢你们! – aape 2009-08-26 12:53:48

回答

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

+0

非常感谢。 LinqBridge看起来很漂亮。 – aape 2009-08-26 13:00:02

2

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

2

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

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

+0

感谢您的信息和链接。 – aape 2009-08-26 12:59:24

2

如果您的目标是.NET Framework 2,那么您可以通过一点额外的努力来获得LINQ的工作。

最简单的方法把事情快速移动是下载LINQBridge它提供了一个LINQ实施框架2.

至于为什么你在GAC看到System.Data.Linq程序...听起来像你.NET 3.5与.NET 2.0并排安装

+0

“...听起来像你有NET 3.5与.NET 2.0并排安装” 谢谢。那会让我一整天都在想这些。 – aape 2009-08-26 13:01:15

相关问题