Справочная информация: мне нужно создать специальный метод расширения для linqtohiberante, чтобы сделать следующее,
result.Where(p => p.MyIntColumn.IsLike('%100%') );
, чтобы вывести пользовательский sql следующим образом.
select * from orders where CONVERT(VARCHAR, MyIntColumn) LIKE '%100%'
И я пытаюсь создать собственное выражение для этого путем расширения BaseHqlGeneratorForMethod , как показано ниже.
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.Like(treeBuilder.MethodCall("convert",
new[] { "stuck here", visitor.Visit(arguments[0]).AsExpression() }),
visitor.Visit(arguments[1]).AsExpression());
}
Мне нужно иметь возможность вставить VARCHAR как выражение в список параметров выражения MethodCall. Посмотрите текст "застрял здесь" в приведенном выше фрагменте кода. Любая идея, как я могу это сделать.
Заранее спасибо
Шмель