... Query<T>(..., Expression<Func<T>> parameters)
{
var paramVisitor = new ParameterVisitor();
paramVisitor.Visit(parameters);
// use paramVisitor.Parameters
}
class ParameterVisitor : System.Linq.Expressions.ExpressionVisitor
{
List<IDbDataParameter> _parameters = new List<IDbDataParameter>();
public IDbDataParameter[] Parameters => _parameters.ToArray();
protected override Expression VisitNew(NewExpression node)
{
Console.WriteLine(node.ToString());
for (int i = 0; i < node.Members.Count; i++)
{
_parameters.Add(CreateParameter(node.Members[i].Name, ((ConstantExpression)node.Arguments[i]).Value));
}
return node;
}
}
Similar to
As suggested by tragicshark