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); }