2009-08-26 7 views
1

J'essaie de faire fonctionner this sitemap clas s.VB.NET et LINQ. Qu'est-ce que j'oublie ici?

Il semble utiliser LINQ, que je n'ai jamais utilisé, mais la moitié du plaisir de la programmation est d'apprendre de nouvelles choses!

Mon problème est que je reçois des erreurs de compilation où le code LINQ est. VS ne le reconnaît tout simplement pas. J'ai une référence à system.data.linq, j'ai une importations system.data.linq, mais toujours où le code lit, "Dossiers Dim = De o Dans Directory.GetDirectories ...", il me dit "Fin de la déclaration attendue."

Qu'est-ce qui me manque dans le câblage pour que je puisse utiliser LINQ? Mon cadre est 2.0.5. LINQ est-il simplement indisponible pour moi en 2? Si oui, pourquoi system.data.linq est-il dans mon GAC?

Voici le code:

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 

Merci y'all. Stack Roches de débordement.

+0

Arg. Nous sommes toujours en 2005. Je les GARDE à les déranger chaque semaine, nous devons les mettre à niveau, et être ignorés. C'est encore plus de munitions pour moi, au moins. Merci les gars! – aape

Répondre

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 

EDIT: en fait, vous ne pouvez pas utiliser LINQ dans .NET 2.0, du moins pas sans quelques modifications ... Cependant, en utilisant le code LINQ et compilé avec le compilateur .NET 3.5 peut être exécuté sur un. Exécution de NET 2.0, en utilisant LinqBridge

+0

Merci beaucoup. Que LinqBridge semble assez spiffy. – aape

2

Vous devez cibler 3.5 (Visual Studio 2008) pour utiliser linq.

2

Vous pouvez utiliser LINQ avec .NET 2.0, selon this link (je ne l'ai pas testé personnellement). Vous aurez besoin de Visual Studio 2008 si ...

Si c'est possible, je vous suggère de mettre à niveau vers .NET 3.5, sauf si vous voulez attendre le prochain .NET 4.0. :-)

+0

Merci pour l'information et le lien. – aape

2

Si vous ciblez le .NET Framework 2, vous pouvez faire fonctionner LINQ ... avec un petit effort supplémentaire.

La meilleure façon de faire bouger les choses rapidement est de télécharger LINQBridge qui fournit une implémentation LINQ pour cadre 2.

Quant à savoir pourquoi vous voyez System.Data.Linq dans le GAC ... semble que vous avoir .NET 3.5 installé côte à côte avec .NET 2.0

+0

"... vous semble avoir installé .NET 3.5 côte à côte avec .NET 2.0" Merci. Cela m'aurait embêté toute la journée à me poser des questions à ce sujet. – aape