Как создать Дерево выражений, чтобы сделать что-то подобное команде “Like” SQL

Я работаю над некоторым кодом дерева выражений, написанным коллегой, и изучаю возможность добавления дополнительных выражений. Это в настоящее время поддерживает: равняется, не - равняется, IsNull и т.д. Я должен добавить что-то, что позволит этому использовать подстановочное сравнение, подобное команде “Like” SQL или использующий регулярные выражения. В данный момент код анализирует XML-файл и извлекает данные, которые затем обрабатываются с помощью кода, подобного строке, показанной ниже. Это - пример “Равного” выражения. “callExp” является MemberExpression, который в основном удерживает позиции, название моей таблицы (Объекты) и GetConstantExpression получает детали о данных, которые я сравниваю.

xRet = Expression.MakeBinary(ExpressionType.Equal, callExp, GetConstantExpression(element.Element("Value"), callExp.Type));

Что я, после способ создать “Выражение”, которое подобно команде “Like”. Это может быть сделано с помощью нескольких строк, подобных вышеупомянутому, или будет этим более сложным? Какие-либо хорошие ресурсы, которые могли помочь в этой области?

==================================================================================

Новый код на основе обратной связи:

Я смотрел на некоторые примеры и попробовал следующее, которое я надеялся, создаст меня Выражение. Это дает мне ошибку, показанную ниже. Я иду в правильном направлении для создания выражения “StartsWith”? _entityExp является ссылкой ParameterExpression на MyClass.

ParameterExpression p = Expression.Parameter(_entityExp.Type, "entity");
MethodInfo method = typeof(string).GetMethod("StartsWith", new[] { typeof(string) });
var containsMethodExp = Expression.Call(p, method, Expression.Constant("root"), p);

Метод 'булев StartsWith (Система. Строка)' объявленный на типе 'Система. Строку' нельзя назвать с экземпляром типа 'MyClass'

5
задан Retrocoder 20 July 2010 в 15:18
поделиться