public void In测试2() { //var Name = "测试bool修改2"; //2 in 声明数组变量当参数传入 走参数化查询 var arrEditCount = new int[5] { 22, 2, 3, 5, 1 }; // Expression <Func <LockPers, bool> > expression = w => SM.In(w.EditCount, arrEditCount) //&& w.Name == Name && (w.Prompt.Contains("%hou%") || w.IsDel == false); StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); foreach (var name in spars.ParameterNames) { Console.WriteLine(name); WriteJson(spars.Get <object>(name)); } Console.WriteLine(sql); var example = " "; Console.WriteLine(example); // var datearr = new DateTime[2] { new DateTime(18, 11, 28), new DateTime(18, 11, 22) }; // && SM.In(w.UpdateTime, datearr) // //and EditCount in ('18/11/28', '18/11/22') // Assert.Fail(); //断言 //var objs = LockDapperUtilsqlite<LockPers>.Get(expression); //WriteJson(objs); }
public void 查询条件添加不通的where() { var Name = "测试bool修改2"; //var Content = "测试bool修改2"; //var arrEditCount = new int[5] { 22, 2, 3, 5, 1 }; // DateTime?startDate = new DateTime(2018, 10, 17); DateTime?endDate = ((DateTime)startDate).AddDays(1); var IsDel = false; //时间类型现在获取不到 Expression <Func <LockPers, bool> > expression = w => w.Name == Name && w.InsertTime >= startDate && w.InsertTime < endDate //&& w.InsertTime > // SM.DateStr(InserTime) //&& SM.In(w.EditCount, arrEditCount) && w.IsDel == IsDel; StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); // expression = w => w.Content == Content; foreach (var name in spars.ParameterNames) { Console.WriteLine(name); WriteJson(spars.Get <object>(name)); } }
public void bool测试() { Expression <Func <LockPers, bool> > expression = t => t.Name.Contains("%蛋蛋%") && t.IsDel == false; StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); var objs3 = LockDapperUtilTest <LockPers> .New.Get(expression); WriteJson(objs3); }
public void 括号优先级连接数据库测试() { Expression <Func <LockPers, bool> > expression = w => w.IsDel != true ; StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); var example = "IsDel != 1 and (name like '%蛋蛋%' or name like '%大疆%' or Prompt like '%_%') and EditCount in (1, 2, 3) and InsertTime > '2017-11-01 00:00:00' "; Console.WriteLine(example); }
public void 查询条件添加不通的where2() { //1 //Expression<Func<LockPers, bool>> expression1 = w => w.Name == ""; //Expression<Func<LockPers, bool>> expression2 = w => w.IsDel == true; //Expression<Func<LockPers, bool>> expression3 = w => w.Content == ""; //Expression<Func<LockPers, bool>> expression4 = expression3.And(expression1.Or(expression2)); //2 var arrEditCount = new int[6] { 22, 2, 3, 5, 1, 11 }; // DateTime?startDate = new DateTime(2018, 10, 17); DateTime?endDate = ((DateTime)startDate).AddDays(1); DateTime?startDate2 = new DateTime(2018, 3, 17); DateTime?endDate2 = ((DateTime)startDate).AddDays(1); Expression <Func <LockPers_, bool> > where = PredicateBuilder.WhereStart <LockPers_>(); where = where.And(w => SM.In(w.EditCount, arrEditCount)); where = where.And(w => w.InsertTime >= startDate && w.InsertTime < endDate || w.InsertTime >= startDate2 && w.InsertTime < endDate2); where = where.And(w => w.IsDel == false); //where = where.Or(w => ()); //3 or里面括号问题 //int? i1 = 1; //int? i2 = 2; //int? i3 = 3; //Expression<Func<LockPers_, bool>> where = PredicateBuilder.WhereStart<LockPers_>(); //where = where.And( ww => ww.EditCount == i1); //where = where.And(ww => ww.EditCount == i2); //where = where.Or(ww => (ww.EditCount == i3 && ww.IsDel == true)); StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(where, ref sql, ref spars); Console.WriteLine(sql); foreach (var name in spars.ParameterNames) { Console.WriteLine(name); WriteJson(spars.Get <object>(name)); } }
public void 括号优先级() { // 1 Expression <Func <LockPers, bool> > expression = w => (w.Id == "1" && (w.Name == "2" || w.Prompt == "3") && w.Content == "4" || w.Id == "5") && (w.IsDel != false && (w.IsDel == false || w.IsDel == true)); StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); var example = "( w.Id == '1' && (w.Name == '2' || w.Prompt == '3') && w.Content == '4' || w.Id == '5') && w.IsDel != '0'"; Console.WriteLine(example); //// 2 //sql = null; //spars = null; //expression = w => // ( (w.Id == "1" || w.Name == "2" ) && (w.Prompt == "3" || w.Content == "4" ) || w.Id == "5") // && w.IsDel != "0"; //AnalysisExpression.VisitExpression(expression, ref sql, ref spars); //Console.WriteLine(sql); //// 3 //sql = null; //spars = null; //expression = w => // w.IsDel != "0" && w.Id == "1" || w.Name == "2" || w.Prompt == "3" || w.Content == "4" || w.Id == "5"; //AnalysisExpression.VisitExpression(expression, ref sql, ref spars); //Console.WriteLine(sql); //// 4 //sql = null; //spars = null; //expression = w => // w.IsDel != "0" && w.Id == "1" && w.Name == "2" && (w.Prompt == "3" || w.Id == "5") && w.Content == "4"; //AnalysisExpression.VisitExpression(expression, ref sql, ref spars); //Console.WriteLine(sql); foreach (var name in spars.ParameterNames) { Console.WriteLine(name); WriteJson(spars.Get <object>(name)); } }
public void In测试1() { // 1 in 表达式内创建数组(少量) 会直接转成sql 不走参数化 Expression <Func <LockPers, bool> > expression = t => SM.In(t.Name, new string[] { "马", "码" }) && t.Name == "农码一生" && t.Prompt == "男" || t.Name.Contains("11"); StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); var example = " Name in ('马','码') and Name = @Name0 and Prompt = @Prompt1 or Name like @Name2 "; Console.WriteLine(example); var sqlstr = " Name in ('马','码') && Name == '农码一生' && Prompt == '男' || Name like '11' "; Console.WriteLine(sqlstr); }
public void 括号测试2() { Expression <Func <LockPers, bool> > expression = w => w.Id == "1" && w.Name == "2" || (w.IsDel != false && w.IsDel == true); StringBuilder sql = null; DynamicParameters spars = null; AnalysisExpression.VisitExpression(expression, ref sql, ref spars); Console.WriteLine(sql); var example = " w.Id == '1' && w.Name == '2' || (w.IsDel != false && w.IsDel == true) "; Console.WriteLine(example); foreach (var name in spars.ParameterNames) { Console.WriteLine(name); WriteJson(spars.Get <object>(name)); } }