¿Cómo construyo consultas dinámicas de linq en tiempo de ejecución usando cadenas?

Este artículo habla sobre la construcción de consultas dinámicas usando cadenas ¿es posible?

Lo intenté

var ase = a.Select("NEW(activity_date as date)");

y no funciona

Los argumentos de tipo para el método 'System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func)' no se pueden inferir del uso. Intente especificar los argumentos de tipo explícitamente.

C:\.....\filename.xaml.cs

¿Cómo construyo consultas dinámicas de linq en tiempo de ejecución usando cadenas?

preguntado el 20 de junio de 11 a las 21:06

Scott Gu escribió en su blog sobre eso. -

2 Respuestas

En el directorio de muestras de linq hay una biblioteca dinámica de Linq que puedes usar, Scott Gu tiene una publicación de blog bastante buena sobre cómo usarla aquí.

Respondido el 21 de junio de 11 a las 01:06

Sí, puede tener consultas dinámicas de linq en tiempo de ejecución usando cadenas. Necesita usar la clase ObjectQuery como se mencionó aquí y a continuación se muestra el fragmento de código para hacer esto:

string queryString =
    @"SELECT VALUE product FROM AdventureWorksEntities.Products AS product";

// Call the constructor with the specified query and the ObjectContext.
ObjectQuery<Product> productQuery2 =
    new ObjectQuery<Product>(queryString, context);

foreach (Product result in productQuery2)
    Console.WriteLine("Product Name: {0}", result.Name);

ObjectQuery validará la consulta con el modelo LINQ en el tiempo de ejecución y lanzará una excepción si no pudo encontrar algunas de las propiedades que está usando en la consulta.

Respondido el 21 de junio de 11 a las 01:06

¿Dónde encuentro ObjectQuery? No encuentro System.Data.Objects después de buscar en Google - user677607

simplemente haga clic en el enlace del documento de MSDN que publiqué (msdn.microsoft.com/en-us/library/bb345303.aspx), Creo que está en System.Data.Entity.dll. - oscarkuo

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