Oracle
 sql >> база данни >  >> RDS >> Oracle

Динамично генериране на ламбда израз с константи от променливи

Може да се направи относително лесно с ExpressionVisitor който оценява ConstantExpression членове като това:

public static class ExpressionUtils
{
    public static Expression<TDelegate> ReplaceVariablesWithConstants<TDelegate>(this Expression<TDelegate> source)
    {
        return source.Update(
            new ReplaceVariablesWithConstantsVisitor().Visit(source.Body), 
            source.Parameters);
    }

    class ReplaceVariablesWithConstantsVisitor : ExpressionVisitor
    {
        protected override Expression VisitMember(MemberExpression node)
        {
            var expression = Visit(node.Expression);
            if (expression is ConstantExpression)
            {
                var variable = ((ConstantExpression)expression).Value;
                var value = node.Member is FieldInfo ?
                    ((FieldInfo)node.Member).GetValue(variable) :
                    ((PropertyInfo)node.Member).GetValue(variable);
                return Expression.Constant(value, node.Type);
            }
            return node.Update(expression);
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да се свържа с база данни на Oracle от Ant, използвайки tnsname?

  2. Сигнали за време, прекарано в чакане на базата данни EM12c

  3. Извикване на запаметена процедура в Java в java програма

  4. Oracle SELECT WHERE стойност съществува или не съществува

  5. Изпълнете командата за импортиране на Oracle от Java и вижте изхода на конзолата