Tenemos un objetodinámicamente generar LINQ consulta
public class SomeObject
{
public Name {get;set;}
public City {get;set;}
public State {get;set}
//various other parameters. Let's say there's ~20
}
¿Es posible crear dinámicamente nuevas consultas LINQ sin recompilación del código fuente? En cambio, los parámetros de consulta provienen de una estructura XML que se almacena y actualiza en la base de datos.
var result = from i in someObj
where
//XML requests Name = 'Bob'...so append this where clause
name = 'Bob'
¿Se puede hacer esto?
Hay un par de formas diferentes de hacerlo. Siempre será Propiedad == Valor. ¿Son menores que, mayores que, no iguales posibles? ¿El XML puede especificar más de un valor? 'Nombre = 'Bob' || Nombre = 'Fred''. ¿Las condiciones solo se combinan con &&? 'Name = 'Bob' && State = 'OH''. ¿O pueden las condiciones combinarse con ||? 'Nombre = 'Bob' || Estado = 'OH''. Todos estos deben tenerse en cuenta antes de poder proponer una solución. – cadrell0
La pregunta carece de claridad; no informa que la estructura XML contendrá expresiones condicionales (en lugar de solo los valores deseados que se emparejarán, como parece implicar 'Name =' Bob''). Es estúpido e inútil que alguien encuentre apropiado dar la vuelta y rechazar todas las respuestas que no hayan inferido esta información faltante. – Douglas
@ Cadrell0 - Las consultas más complejas serían una muy buena adición. Traté de comenzar la pregunta de forma simple con solo una cláusula where. No sabía si esa sería una solución muy compleja en sí misma. A juzgar por las respuestas, parece que hay una biblioteca completa disponible para realizar las tareas. Dynamic LINQ by ScottGU parece prometedor. –