2011-01-08 4 views
7

Actuellement, j'utilise l'exemple de requête dynamique LinqKit/Ms pour construire dynamiquement des expressions Linq à partir de chaînes. Cela fonctionne bien.Création de requêtes Linq à partir d'une chaîne dans C# 4.0 - meilleure pratique

  1. LinqKit: http://www.albahari.com/nutshell/linqkit.aspx
  2. requêtes Microsoft Linq de dynamique: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

En ce moment, je suis migraient ma demande de C# 3,5 à 4,0 C#. Je me demande s'il existe une autre façon (de manière standard du framework) de construire des requêtes à partir de chaînes de caractères.

J'ai vérifié la documentation, mais je n'ai encore rien trouvé. Aussi ce n'est pas un problème, puisque j'ai la solution ci-dessus.

Seulement je préférerais utiliser les fonctionnalités "standard" s'il y en a. Quelle est la meilleure pratique?

+0

Voici une discussion concernant: http://stackoverflow.com/questions/3782538/parsing-a-string-c-linq-expression. Je pense qu'il est à jour pour .NET 4, donc toujours rien intégré dans le framework - sauf si vous parlez de Linq to Entities, alors EF a des capacités de construction de requêtes dynamiques (bien que pas encore nouvelles dans .NET 4 pour autant comme je sais): http://msdn.microsoft.com/en-us/library/bb338811.aspx – Slauma

+0

Jusqu'ici, j'ai eu mon ancien code de travail. Des ajustements mineurs sont requis. Par exemple, un appel de méthode n'accepte plus null, mais vous devez appeler une méthode surchargée. Trucs fondamentalement simple une fois que vous savez. Cependant, bon à savoir je n'ai visiblement rien manqué. –

Répondre

2

Je suis en train de faire quelque chose comme ça et je suis très content du résultat. La façon dont je l'ai fait était avec Entity Framework et la méthode ObjectQuery.Select (requête de chaîne, ObjectParameters []). Plus d'infos ici: http://msdn.microsoft.com/en-us/library/bb298787.aspx#Y586.

Vous ne ferez pas d'expression à partir d'une chaîne, mais en utilisant SQL to Entities qui fait très bien le travail et a été fait exactement dans ce but, dynamiquement Expression n'est pas trivial et est en fait plus lent.

Vive

+0

C'est bon, ça m'a pris du temps pour le vérifier. Cependant, il est évidemment une approche différente de "MSDynamicLinq2010" (à partir des exemples VS2008) et "LinqKit" et donc quelque chose de nouveau (au moins pour moi). Je l'aurai en tête pour mes prochaines solutions. –

+0

Je suppose qu'il y a plus d'une façon de peler un chat. Je me souviens d'un TechEd MS disant qu'ils ont fait Entity SQL dans le but clair d'avoir une alternative plus facile à faire des Expressions dynamiques. C'est encore abstrait et légèrement plus rapide que d'utiliser des expressions, donc pour les choses dynamiques, je peux difficilement penser à un inconvénient. Fonctionne super pour moi. –

Questions connexes