Ознакомьтесь с Динамической библиотекой Linq из блога ScottGu:
Например, ниже приведен стандартный безопасный для типов запрос LINQ to SQL VB, который получает данные из базы данных Northwind и отображает их в элементе управления ASP.NET GridView:
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()
Используя библиотеку LINQ DynamicQuery, я мог бы переписать приведенное выше выражение запроса, как показано ниже:
Dim Northwind As New NorthwindDataContext
Dim query = Northwind.Products .where("CategoryID=2 And UnitPrice>3") . OrderBy("SupplierId")
Gridview1.DataSource = query
GridView1.DataBind()
Обратите внимание на то, как условия условного-где и предложения-сортировки теперь принимают строковые выражения вместо выражений кода. Поскольку они являются строками с поздней привязкой, я могу их динамически построить. Например: я мог бы предоставить пользовательский интерфейс для бизнес-аналитика конечного пользователя, используя мое приложение, которое позволяет им самостоятельно создавать запросы (включая произвольные условные предложения).