2009-07-02 7 views
1

J'essaie d'apprendre quelques VB.NET pour mon co-op qui commence la semaine prochaine, et pour cette raison j'ai pris mon site Web de portefeuille qui est sur C# et juste commencé à convertir en VB.NET pour se familiariser avec la syntaxe.Linq to Sql convertir en liste générique dans VB.NET

Je suis sûr que mon problème est simple mais j'ai du mal à le résoudre. J'essaie d'attraper des données avec la requête linq, puis de la renvoyer sous forme de liste à lier au répéteur.

J'ai la fonction suivante:

Public Function getProjects() As List(Of portfolio_website) 
     Using myPortfolio As New PortfolioDataContext 
      Try 

       Dim myProjects = (From p In myPortfolio.portfolio_websites _ 
            Order By p.website_id Descending _ 
            Select New With {.name = p.website_name, .id = p.website_id}).Take(5) 

       Return myProjects 

      Catch ex As Exception 
       Return Nothing 
      End Try 
     End Using 
    End Function 

Cependant, je reçois une erreur.

Si je le ferais en C# alors MyProjects sera var et en retour je vais avoir

return myProjects.ToList(); 

Et ça marcherait bien. Cependant si j'essaye d'employer ToList() dans VB.NET j'obtiens l'erreur qu'il ne peut pas le convertir de la liste de ling vers de sql à la liste générique.

Comment faire cette conversion dans VB.NET? ou peut-être y a-t-il un autre moyen?

Je suis décent quand il s'agit de C# mais quelque peu perdu avec la syntaxe VB.NET.

Répondre

1

Je déteste ça. Deuxième après avoir posé ma question j'ai réalisé mon mystake. Il est le même que dans C#, mais si je prends

Select New With {.name = p.website_name, .id = p.website_id 

alors je soit besoin d'avoir un objet personnalisé, ou que je dois prendre tout. donc j'ai changé mon LINQ to SQL à la

Dim myProjects = (From p In myPortfolio.portfolio_websites _ 
           Order By p.website_id Descending _ 
           Select p).Take(5) 

Return myProjects.ToList() 

et maintenant tout fonctionne.