Один из вариантов - использовать для этого проект Dynamic LINQ . Я думаю, что это то же самое, что DynamicQuery
, упомянутый Рубеном. В любом случае, он позволяет писать такие вещи, как:
var res = db.Table.Where("CategoryID == 2").Select("CategoryName");
Динамический LINQ добавляет перегрузки обычных методов LINQ, которые принимают строку в качестве параметров. Они анализируют строку в дереве выражений, которое затем может использоваться LINQ или LINQ to SQL.
Альтернативой является составление дерева выражений из простых фрагментов кода (таких как функции, которые получают доступ к различным свойствам и различные операторы, которые можно использовать для сравнения их со значениями). Я думаю, что это более элегантно и требует меньше накладных расходов. Я написал о этом подходе здесь , и есть тип с именем PredicateBuilder , который делает его проще.