protected override Expression VisitIn(InExpression inExpression)
        {
            if (inExpression.Values is SqlParameterExpression spe)
            {
                var plist = queryContext.ParameterValues[spe.Name] as System.Collections.IList;

                // inExpression.Item

                // sqlFactory.a

                // var ce = sqlFactory.Constant(plist.Select(x => (object));

                List <object> list = new List <object>();
                foreach (var item in plist)
                {
                    list.Add(item);
                }

                var ce = sqlFactory.Constant(list, sqlFactory.GetTypeMappingForValue(list.FirstOrDefault()));

                // sqlFactory.MakeBinary(ExpressionType.or)



                return(inExpression.Update(inExpression.Item, ce, inExpression.Subquery));

                //var _relationalCommandBuilder = this.GetPrivateField<IRelationalCommandBuilder>("_relationalCommandBuilder");
                //_relationalCommandBuilder.Append(inExpression.IsNegated ? " NOT IN " : " IN ");
                //_relationalCommandBuilder.Append("(");
                //// _relationalCommandBuilder.Append(spe.Name);

                //// we need to expand our list here...
                //var prefix = spe.Name;

                //var plist = queryContext.ParameterValues[spe.Name] as System.Collections.IList;
                //int i = 0;
                //foreach(var pv in plist)
                //{
                //    var n = $"{prefix}_{i}";
                //    queryContext.AddParameter(n, pv);
                //    if (i != 0)
                //    {
                //        _relationalCommandBuilder.Append(", ");
                //    }
                //    _relationalCommandBuilder.AppendLine($"@{n}");
                //    i++;
                //}

                //_relationalCommandBuilder.Append(")");
                // return inExpression;
            }

            return(inExpression);
        }