2013-05-13 4 views
0

Je me demande comment je peux transformer une FilterExpression dans LINQ en une clause SQL.Comment transformer une expression de filtre LINQ en requête SQL?

{it => (IIF((it.DatasetTitle == null), null, Convert("Ref".Contains(it.DatasetTitle))) == Convert(True))} 

Existe-t-il des moyens pratiques de remplacer l'expression ci-dessus par une clause SQL?

+0

que cherchez-vous? Juste la traduction Sql de cette clause? –

+0

Je cherche des moyens de traduire l'expression LINQ dans une clause SQL. –

Répondre

1

De manière générale, vous ne le feriez pas directement. L'objet sous-jacent qui implémente l'IQueryable sur lequel vous exécutez l'opération LINQ gérerait ce travail. Puisque vous avez étiqueté OData, je suppose que vous utilisez WCF Data Services. Dans votre objet contexte, vous pouvez déclarer vos propriétés typées DbSet. DbSet implémente IQueryable, et le fera pour vous.

+0

J'ai utilisé WCF Data Service Toolkit pour implémenter un fournisseur de services de données personnalisé. Pour utiliser la bibliothèque, je dois créer une méthode GetAll (ODataQueryOperation oDataQueryOperation) pour chaque référentiel. La méthode obtient des données et les filtre en fonction du paramètre transmis par les utilisateurs. Et dans le oDataQueryOperation, je peux trouver un objet FilterExpression qui a un ensemble de requêtes système OData. Je veux extraire l'expression pour construire une clause WHERE. –

+0

N'utilisez-vous pas Entity Framework, nHibernate ou un autre ORM sous WCF DS? – object88

+0

J'utilise WCF DS Toolkit avec ODataLib 5.4. –

Questions connexes