Vérifiez la Dynamic Linq Library du blog de ScottGu:
Par exemple, ci-dessous est un LINQ de type sécurisé standard pour requête SQL VB qui récupère des données à partir d'une base de données Northwind et il affiche dans un contrôle ASP.NET GridView:
Dim Northwind As New NorthwindDataContext
Dim query = From q In Northwind.Products Where p.CategoryID = 2 And p.UnitPrice > 3 Order By p.SupplierID Select p
Gridview1.DataSource = query
GridView1.DataBind()
Utilisation de la bibliothèque LINQ DynamicQuery je pourrais réécrire l'expression de requête ci-dessus à la place comme si
Dim Northwind As New NorthwindDataContext
Dim query = Northwind.Products .where("CategoryID=2 And UnitPrice>3") . OrderBy("SupplierId")
Gridview1.DataSource = query
GridView1.DataBind()
Remarquez comment la condition-where où la clause sort-orderby prend maintenant des expressions de chaîne au lieu des expressions de code. Parce que ce sont des chaînes liées en retard, je peux les construire dynamiquement. Par exemple: Je pourrais fournir l'interface utilisateur à un analyste d'affaires de l'utilisateur final en utilisant mon application qui leur permet de construire des requêtes par eux-mêmes (y compris des clauses conditionnelles arbitraires).
Est-ce que cela fonctionne? J'obtiens ceci: Erreur La résolution de surcharge a échoué parce qu'aucun 'OrderBy' accessible ne peut être appelé avec ces arguments: Le (s) type (s) de données du (des) paramètre (s) de type ne peuvent pas être déduits de ces arguments. Spécifier le (s) type (s) de données explicitement pourrait corriger cette erreur. Je ne peux pas voir 'String' comme une option de paramètre dans la clause .OrderBy. – JohnnyBizzle
@JohnnyBizzle - Cela fonctionne. Je l'utilise dans de nombreux projets. Vérifiez que le fichier dynamic.cs figure dans votre projet et que vous l'avez correctement référencé dans vos déclarations d'utilisation. – Geoff
C'est génial. Je n'ai jamais su que tu pouvais faire ça. Cela résoudra mon problème avec la construction de requêtes de recherche avancée. Nice one +1 – ppumkin