public void Test_3() { var parameters = new List <string>(); var condition = new InCondition("a", parameters); Assert.Null(condition.GetCondition()); }
public void Test_5() { var parameters = new List <string> { "b", "c" }; var condition = new InCondition("", parameters); Assert.Null(condition.GetCondition()); }
public void Test_2() { var parameters = new List <string> { "b", "c" }; var condition = new InCondition("a", parameters); Assert.Equal("a In (b,c)", condition.GetCondition()); }
public void ToStringTest(string expectedExpr, string operandExpr, params string[] valuesExpr) { var operand = new FakeToStringCondition(operandExpr); var valueList = valuesExpr.Select(i => new FakeToStringCondition(i)).ToList(); var sut = new InCondition(operand, valueList); var actual = sut.ToString(); actual.Should().Be(expectedExpr); }
protected virtual string CompileCondition(WhereCondition condition, SqlCompilerContext context) { return(condition switch { CompareColumnsCondition compareColumnsCondition => CompileCondition(compareColumnsCondition, context), CompareCondition compareCondition => CompileCondition(compareCondition, context), InCondition inCondition => CompileCondition(inCondition, context), NestedCondition nestedCondition => CompileCondition(nestedCondition, context), RawCondition rawCondition => CompileCondition(rawCondition, context), _ => throw new ArgumentOutOfRangeException(nameof(condition)) });
/// <summary> /// IN条件解析 /// </summary> /// <param name="condition">需要解析的条件对象</param> /// <returns>返回解析后的条件字符串</returns> protected override string InParse(InCondition condition) { StringBuilder conditionStr = new StringBuilder(" "); string queryColName = condition.SearchColumn.CurrentSearcher.TableName + "." + condition.SearchColumn.ColumnName; if (string.IsNullOrEmpty(condition.SearchColumn.ConditionString)) { conditionStr.Append(queryColName); } else { conditionStr.Append(condition.SearchColumn.ConditionString.Replace(SQLPlaceholder.ColName, queryColName)); } conditionStr.Append(" IN ( "); string paramName = string.Empty; int i = 0; foreach (object pvalue in condition.ParamValueList) { if (i != 0) { conditionStr.Append(","); } if (pvalue is SearchColumn) { SearchColumn tmpColumn = (SearchColumn)pvalue; string valueColName = tmpColumn.CurrentSearcher.TableName + "." + tmpColumn.ColumnName; conditionStr.Append(valueColName); } else { if (!string.IsNullOrEmpty(pvalue.ToString())) { paramName = "P" + Guid.NewGuid().ToString().ToLower().Replace("-", ""); conditionStr.Append("@" + paramName); ParamCollection.Add(new MySqlParameter(paramName, pvalue)); } else { conditionStr.Append("''"); } } i++; } conditionStr.Append(") "); return(conditionStr.ToString()); }
protected virtual string CompileInCondition <T>(SqlResult ctx, InCondition <T> item) { if (!item.Values.Any()) { return(item.IsNot ? "1 = 1" : "1 = 0"); } var inOperator = item.IsNot ? "NOT IN" : "IN"; var values = Parameterize(ctx, item.Values); return(Wrap(item.Column) + $" {inOperator} ({values})"); }
protected virtual string CompileInCondition <T>(SqlResult ctx, InCondition <T> item) { var column = Wrap(item.Column); if (!item.Values.Any()) { return(item.IsNot ? $"1 = 1 /* WhereNotIn({column}, [empty list]) */" : "1 = 0 /* WhereIn({column}, [empty list]) */"); } var inOperator = item.IsNot ? "NOT IN" : "IN"; var values = Parameterize(ctx, item.Values); return(column + $" {inOperator} ({values})"); }
protected virtual string CompileInCondition <T>(SqlResult context, InCondition <T> item) { string column = wrapper.Wrap(item.Column); if (!item.Values.Any()) { return(item.IsNot ? $"1 = 1 /* NOT IN [empty list] */" : "1 = 0 /* IN [empty list] */"); } string inOperator = item.IsNot ? "NOT IN" : "IN"; string values = Parameterize(context, item.Values); return(column + $" {inOperator} ({values})"); }
public void Evaluate(bool expectedResult, object operandValue, params object[] keywordValues) { var variables = A.Dummy <IVariableDictionary>(); var operand = A.Fake <IConditionKeyword>(i => i.Strict()); A.CallTo(() => operand.Evaluate(variables)).Returns(operandValue); var valueList = new List <IConditionKeyword>(); foreach (var value in keywordValues) { var item = A.Fake <IConditionKeyword>(i => i.Strict()); A.CallTo(() => item.Evaluate(variables)).Returns(value); valueList.Add(item); } var sut = new InCondition(operand, valueList); var actual = sut.Evaluate(variables); actual.Should().Be(expectedResult); }
/// <summary> /// IN条件解析 /// </summary> /// <param name="condition">需要解析的条件对象</param> /// <returns>返回解析后的条件字符串</returns> protected override string InParse(InCondition condition) { StringBuilder conditionStr = new StringBuilder(" "); string queryColName = condition.SearchColumn.CurrentSearcher.TableName + "." + condition.SearchColumn.ColumnName; if (string.IsNullOrEmpty(condition.SearchColumn.ConditionString)) { conditionStr.Append(queryColName); } else { conditionStr.Append(condition.SearchColumn.ConditionString.Replace(SQLPlaceholder.ColName, queryColName)); } conditionStr.Append(" IN ( "); string paramName = string.Empty; int i = 0; foreach (object pvalue in condition.ParamValueList) { if (i != 0) { conditionStr.Append(","); } if (pvalue is SearchColumn) { SearchColumn tmpColumn = (SearchColumn)pvalue; string valueColName = tmpColumn.CurrentSearcher.TableName + "." + tmpColumn.ColumnName; conditionStr.Append(valueColName); } else { if (!string.IsNullOrEmpty(pvalue.ToString())) { paramName = "P" + Guid.NewGuid().ToString().ToLower().Replace("-", ""); conditionStr.Append(":" + paramName); ParamCollection.Add(new DBParam(paramName, pvalue)); } else { conditionStr.Append("''"); } } i++; } conditionStr.Append(") "); return conditionStr.ToString(); }
/// <summary> /// 包含集合条件 /// </summary> /// <param name="relation">条件关系</param> /// <param name="column">查询字段对象</param> /// <param name="paramValueList">比较的值列表</param> /// <returns>返回集合条件对象</returns> public static InCondition In(ConditionRelation relation, SearchColumn column, object[] paramValueList) { InCondition cond = new InCondition(relation, column, paramValueList); return cond; }
/// <summary> /// 包含集合条件 /// </summary> /// <param name="paramValueList">比较的值列表</param> /// <returns>返回集合条件对象</returns> public static InCondition In(object[] paramValueList) { InCondition cond = new InCondition(paramValueList); return cond; }
public void Test_4() { var condition = new InCondition("a", null); Assert.Null(condition.GetCondition()); }
/// <summary> /// 包含集合条件 /// </summary> /// <param name="relation">条件关系</param> /// <param name="column">查询字段对象</param> /// <param name="paramValueList">比较的值列表</param> /// <returns>返回集合条件对象</returns> public static InCondition In(ConditionRelation relation, SearchColumn column, object[] paramValueList) { InCondition cond = new InCondition(relation, column, paramValueList); return(cond); }
/// <summary> /// 包含集合条件 /// </summary> /// <param name="paramValueList">比较的值列表</param> /// <returns>返回集合条件对象</returns> public static InCondition In(object[] paramValueList) { InCondition cond = new InCondition(paramValueList); return(cond); }