Creación de consultas de Linq a partir de cadenas en C # 4.0 - mejores prácticas

Actualmente estoy usando el ejemplo de consulta dinámica LinqKit / Ms para construir dinámicamente Expresiones Linq a partir de cadenas. Esto funciona bien.

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

En este momento, estoy migrando mi aplicación de C # 3.5 a C # 4.0. Me pregunto si hay otra forma (forma estándar del marco) de crear consultas a partir de cadenas.

He comprobado la documentación, pero todavía no he encontrado nada. Además, esto no es un problema, ya que tengo la solución anterior.

Solo que prefiero usar las funciones "estándar" si las hay. ¿Cuál es la mejor práctica?

preguntado el 08 de enero de 11 a las 16:01

Aquí hay una discusión relacionada: stackoverflow.com/questions/3782538/… . Creo que está actualizado para .NET 4, por lo que todavía no hay nada integrado en el marco, excepto si está hablando de Linq to Entities, entonces EF tiene capacidades de creación de consultas dinámicas (aunque no es nuevo en .NET 4 hasta ahora que yo sé): msdn.microsoft.com/en-us/library/bb338811.aspx -

Hasta ahora, tengo mi código anterior funcionando. Se requieren pequeños ajustes. Por ejemplo, una llamada a un método ya no acepta nulos, pero debe llamar a un método sobrecargado. Cosas básicamente simples una vez que lo sepas. Sin embargo, es bueno saber que obviamente no me perdí nada. -

1 Respuestas

Actualmente estoy haciendo algo como esto y estoy muy contento con el resultado. La forma en que lo hice fue con Entity Framework y el método ObjectQuery.Select (consulta de cadena, ObjectParameters [] params). Más información aquí: http://msdn.microsoft.com/en-us/library/bb298787.aspx#Y586.

No creará una expresión a partir de una cadena, sino que usará SQL para Entidades, que hace el trabajo muy bien y se hizo exactamente para ese propósito, ya que hacer que Expresión de forma dinámica no sea trivial y en realidad es más lento.

¡Salud

respondido 12 mar '11, 00:03

Eso es bueno, me tomó un tiempo verificarlo. Sin embargo, obviamente es un enfoque diferente de "MSDynamicLinq2010" (de los ejemplos de VS2008) y "LinqKit" y, por lo tanto, algo nuevo (al menos para mí). Tendré esto en mente para mis próximas soluciones. - Horst Walter

Supongo que hay más de una forma de despellejar a un gato. Recuerdo que durante un TechEd MS dije que hicieron Entity SQL con el claro propósito de tener una alternativa más fácil para hacer Expresiones dinámicas. Sigue siendo DB abstracto y un poco más rápido que el uso de expresiones, por lo que para cosas dinámicas apenas puedo pensar en una desventaja. Funciona super para mi. - Fabián Nicollier

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.