Mira la Dynamic Linq Library del blog de ScottGu:
Por ejemplo, a continuación se LINQ estándar de seguridad de tipos de consulta SQL VB que recupera datos de una base de datos Northwind y lo muestra en un control GridView ASP.NET:
Dim Northwind As New NorthwindDataContext
Dim query = From q In Northwind.Products Where p.CategoryID = 2 And p.UnitPrice > 3 Order By p.SupplierID Select p
Gridview1.DataSource = query
GridView1.DataBind()
el uso de la biblioteca de LINQ DynamicQuery pude volver a escribir la expresión de consulta anterior en lugar al igual que
Dim Northwind As New NorthwindDataContext
Dim query = Northwind.Products .where("CategoryID=2 And UnitPrice>3") . OrderBy("SupplierId")
Gridview1.DataSource = query
GridView1.DataBind()
Aviso cómo el cláusula condicional-where y cláusula sort-orderby ahora toman expresiones de cadena en lugar de expresiones de código. Debido a que son cadenas atadas tardíamente, puedo construirlas dinámicamente. Por ejemplo: podría proporcionar UI a un analista de negocios de usuario final usando mi aplicación que les permite construir consultas por sí mismos (incluidas cláusulas condicionales arbitrarias).
¿Funciona? Me sale esto: Error Resolución de sobrecarga fallida porque no se puede llamar a 'OrderBy' accesible con estos argumentos: El tipo (s) de datos de los parámetros de tipo no se pueden inferir a partir de estos argumentos. Especificar los tipos de datos explícitamente podría corregir este error. No puedo ver 'Cadena' como una opción de parámetro en la cláusula .OrderBy. – JohnnyBizzle
@JohnnyBizzle - Funciona. Lo uso en muchos proyectos. Verifica que dynamic.cs esté en tu proyecto y que lo hagas referenciado correctamente en tus declaraciones de uso. – Geoff
Eso es genial. Nunca supe que pudieras hacer eso. Eso resolverá mi problema con la construcción de consultas de búsqueda avanzada. Nice one +1 – ppumkin