From 6b9aa9dcefc96aae66a3406f14ba282b75d1020d Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Wed, 23 Nov 2022 12:27:28 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20string[].Any(..)=20?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E6=A0=91=E8=A7=A3=E6=9E=90=EF=BC=9B?= =?UTF-8?q?ReplaceParameterVisitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 60 ++++++++++++++++------------ FreeSql/Internal/CommonExpression.cs | 6 +++ 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 74c169e0..da3fc0b8 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -404,31 +404,31 @@ namespace base_entity var sql2rscs = Utils.ReplaceSqlConstString("'', 'SARTEN ACERO VITR.18CM''''GRAFIT''''', 'a", pams, "@lantin1"); - using (IFreeSql client = CreateInstance(@"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:/accdb/2007.accdb", DataType.Odbc)) - { - client.Aop.AuditValue += (_, e) => - { - if (e.Object is Dictionary dict) - { - foreach(var key in dict.Keys) - { - var val = dict[key]; - if (val == DBNull.Value) dict[key] = null; - } - e.ObjectAuditBreak = true; - } - }; - Dictionary data = new Dictionary(); - data.Add("ExpNo", "RSP0950008"); - data.Add("SPoint", "RSP0950004"); - data.Add("EPoint", "RSP095000440"); - data.Add("PType", "RS"); - data.Add("GType", "窨井轮廓线"); - data.Add("LineStyle", 2); - data.Add("Memo", DBNull.Value); - data.Add("ClassID", DBNull.Value); - var kdkdksqlxx = client.InsertDict(data).AsTable("FZLINE").ToSql(); - } + //using (IFreeSql client = CreateInstance(@"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:/accdb/2007.accdb", DataType.Odbc)) + //{ + // client.Aop.AuditValue += (_, e) => + // { + // if (e.Object is Dictionary dict) + // { + // foreach(var key in dict.Keys) + // { + // var val = dict[key]; + // if (val == DBNull.Value) dict[key] = null; + // } + // e.ObjectAuditBreak = true; + // } + // }; + // Dictionary data = new Dictionary(); + // data.Add("ExpNo", "RSP0950008"); + // data.Add("SPoint", "RSP0950004"); + // data.Add("EPoint", "RSP095000440"); + // data.Add("PType", "RS"); + // data.Add("GType", "窨井轮廓线"); + // data.Add("LineStyle", 2); + // data.Add("Memo", DBNull.Value); + // data.Add("ClassID", DBNull.Value); + // var kdkdksqlxx = client.InsertDict(data).AsTable("FZLINE").ToSql(); + //} BaseModel.fsql = 1; @@ -487,6 +487,16 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + //Func getName1 = () => "xxx"; + //fsql.GlobalFilter.Apply("fil1", a => a.Nickname == getName1()); + //var gnsql2 = fsql.Select().ToSql(); + + var strs = new string[] { "a", "b", "c" }; + var strssql1 = fsql.Select().Where(a => strs.Any(b => b == a.Nickname)).ToSql(); + var strssql2 = fsql.Select().Where(a => strs.Any(b => a.Nickname.Contains(b))).ToSql(); + var objs = new UserGroup[] { new UserGroup { GroupName = "a", Id = 1 }, new UserGroup { GroupName = "b", Id = 2 }, new UserGroup { GroupName = "c", Id = 3 } }; + var objssql1 = fsql.Select().Where(a => objs.Any(b => b.GroupName == a.Nickname && b.Id == a.GroupId)).ToSql(); + var tttsqlext01 = fsql.Select().ToSql(a => new { diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 44495b3a..671a7e7c 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -2286,6 +2286,12 @@ namespace FreeSql.Internal return Expression.Property(_replaceExp, node.Member.Name); return base.VisitMember(node); } + protected override Expression VisitParameter(ParameterExpression node) + { + if (node == oldParameter) + return _replaceExp; + return base.VisitParameter(node); + } } public class ReplaceHzyTupleToMultiParam : ExpressionVisitor