public object EvaluateExpr(Ast.Expr expr, ScriptEnv env) { var dt = _notebook.Query($"SELECT ({expr.Sql})", env.Vars); if (dt.Columns.Count == 1 && dt.Rows.Count == 1) { return(dt.Rows[0][0]); } else { throw new ScriptException( $"Evaluation of expression \"{expr.Sql}\" did not produce a value."); } }
public T EvaluateExpr <T>(Ast.Expr expr, ScriptEnv env) { var value = EvaluateExpr(expr, env); if (typeof(T).IsAssignableFrom(value.GetType())) { return((T)value); } else { throw new ScriptException( $"Evaluation of expression \"{expr.Sql}\" produced a value of type " + $"\"{value.GetType().Name}\" instead of the expected \"{typeof(T).Name}\"."); } }