This commit is contained in:
sunkaixuan 2017-01-28 21:19:48 +08:00
parent ba927808bf
commit 6e4eb974a6
7 changed files with 40 additions and 21 deletions

Binary file not shown.

View File

@ -27,9 +27,21 @@ namespace OrmTest.ExpressionTest
whereSingle4(); whereSingle4();
whereSingle5(); whereSingle5();
whereSingle6(); whereSingle6();
WhereMultiple1();
} }
base.End("Where Test"); base.End("Where Test");
} }
private void WhereMultiple1()
{
Expression<Func<Student, bool>> exp = it => it.Id > 1;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereMultiple);
expContext.Resolve();
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( it.Id > @Id0 )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, "WhereMultiple1");
}
private void whereSingle1() private void whereSingle1()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 1; Expression<Func<Student, bool>> exp = it => it.Id > 1;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -25,30 +25,11 @@ namespace SqlSugar
break; break;
case ResolveExpressType.WhereSingle: case ResolveExpressType.WhereSingle:
fieldName = getSingleName(parameter, expression, isLeft); fieldName = getSingleName(parameter, expression, isLeft);
if (parameter.BaseExpression is BinaryExpression) fieldName = AppendMember(parameter, isLeft, fieldName);
{
fieldName = string.Format(" {0} ", fieldName);
if (isLeft == true)
{
fieldName += ExpressionConst.Format1 + parameter.BaseParameter.Index;
}
if (base.Context.Result.Contains(ExpressionConst.Format0))
{
base.Context.Result.Replace(ExpressionConst.Format0, fieldName);
}
else
{
base.Context.Result.Append(fieldName);
}
}
else
{
base.Context.Result.Append(fieldName);
}
break; break;
case ResolveExpressType.WhereMultiple: case ResolveExpressType.WhereMultiple:
fieldName = getMultipleName(parameter, expression, isLeft); fieldName = getMultipleName(parameter, expression, isLeft);
base.Context.Result.Append(fieldName); fieldName = AppendMember(parameter, isLeft, fieldName);
break; break;
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
fieldName = getSingleName(parameter, expression, isLeft); fieldName = getSingleName(parameter, expression, isLeft);
@ -63,6 +44,32 @@ namespace SqlSugar
} }
} }
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
{
if (parameter.BaseExpression is BinaryExpression)
{
fieldName = string.Format(" {0} ", fieldName);
if (isLeft == true)
{
fieldName += ExpressionConst.Format1 + parameter.BaseParameter.Index;
}
if (base.Context.Result.Contains(ExpressionConst.Format0))
{
base.Context.Result.Replace(ExpressionConst.Format0, fieldName);
}
else
{
base.Context.Result.Append(fieldName);
}
}
else
{
base.Context.Result.Append(fieldName);
}
return fieldName;
}
private string getMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) private string getMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
{ {
string shortName = expression.Expression.ToString(); string shortName = expression.Expression.ToString();