2009-05-11 19 views
1

Je triying à faire exactement la même chose décrit here, mais dans VB.NETconditionnelle requêtes LINQ dans VB.NET

J'ai essayé tous les C# convertisseurs de VB, mais personne ne semble travailler avec LINQ. Je suis totalement nouveau à C#, donc toute aide sera appréciée!

public static IQueryable<Type> HasID(this IQueryable<Type> query, long? id) { return id.HasValue ? query.Where(o => i.ID.Equals(id.Value)) : query; }

Répondre

3

Essayez ceci:

Public Module MyModule 
    <Runtime.CompilerServices.Extension()> _ 
    Public Function HasID(ByVal query As IQueryable(Of Type), ByVal id As Long?) As IQueryable(Of Type) 
     Return If(id.HasValue, query.Where(Function(o) o.ID.Equals(id.Value)), query) 
    End Function 
End Module 

Dans VB.NET, vous devez créer un module pour créer une méthode d'extension. Placez également l'attribut Runtime.CompilerServices.Extension et supprimez statique et cela de la définition de fonction.

P.S. déteste VB :)

+0

Dites-nous quel est le type "Type"? – Kamarey

0

Quel convertisseur avez-vous essayé? Vous devriez essayer Telerik Converter. J'ai copié votre code dans leur convertisseur et j'ai obtenu ceci:

<System.Runtime.CompilerServices.Extension> _ 
Public Shared Function HasID(query As IQueryable(Of Type), id As System.Nullable(Of Long)) As IQueryable(Of Type) 
    Return If(id.HasValue, query.Where(Function(o As) i.ID.Equals(id.Value)), query) 
End Function 



'======================================================= 
'Service provided by Telerik (www.telerik.com) 
'Conversion powered by NRefactory. 
'Built and maintained by Todd Anglin and Telerik 
'======================================================= 
+0

Les premiers dans Google. Ouais pas "tout" en fait. Merci, j'ai mis en signet celui-ci! –

+0

+1 pour mentionner la source. –