MemberExpression怎么获取变量的值

我上端传了一个变量:

int smid = 15;
ServersModel sgm = sqlHelper.Query<ServersModel>(s => s.id == smid);

后端二次表达式 base.Visit(node.Right);会跳转到VisitMember方法(MemberExpression只能获取成员的名称)怎么获取这个变量的值:

protected override Expression VisitBinary(BinaryExpression node)
{
    if (node == null)
    {
        throw new ArgumentNullException("BinartExpression");
    }
    //this._stack.Push(")");
    base.Visit(node.Right);
    this._stack.Push(" " + node.NodeType.ToSqlOperator() + " ");
    base.Visit(node.Left);
    //this._stack.Push("(");
    return node;
}

protected override Expression VisitMember(MemberExpression node)
{
    if (node == null)
    {
        throw new ArgumentNullException("MemberExpression");
    }
    this._stack.Push(" " + node.Member.Name + " ");
    return node;
}

最后的sql语句拼接成这样:select * from servers where id =sid

我想要这样的:select * from servers where id = 15

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

protected override Expression VisitMember(MemberExpression node)
        {
            
            if (node == null)
            {
                throw new ArgumentNullException("MemberExpression");
            }

            if (node != null && node.Expression is ParameterExpression)
            {
                this._stack.Push(" " + node.Member.Name + " ");
            }
            else
            {
                var f = Expression.Lambda(node).Compile();
                var value = f.DynamicInvoke();
                this._stack.Push(" " + value + " ");
            }
            return node;
        }

我用这种方式解决了