update exp to sql

This commit is contained in:
sunkaixuna 2021-12-25 17:00:28 +08:00
parent b00b651d7f
commit 82c3833e4c
2 changed files with 21 additions and 1 deletions

View File

@ -213,6 +213,9 @@ namespace OrmTest
var d111111111 = db.Queryable<Order>()
.Where(it => it.Id == (it.Id > 0 ? (it.Id == 1 ? 11 : (it.Id==2?2:1)) : 2))
.ToList();
bool? bq = true;
var d1111111111 = db.Queryable<BoolTest1>().Where(it => it.a.Equals(bq.Value)).ToArray();
var d11111111111 = db.Queryable<BoolTest1>().Where(it => SqlFunc.IIF(bq.Value,1,2)==1).ToArray();
}

View File

@ -428,6 +428,7 @@ namespace SqlSugar
var isIFFBoolBinary = isIIF && (item is BinaryExpression) && (item as BinaryExpression).Type == UtilConstants.BoolType;
var isIFFBoolMethod = isIIF && (item is MethodCallExpression) && (item as MethodCallExpression).Type == UtilConstants.BoolType;
var isFirst = item == args.First();
var isBoolValue = item.Type == UtilConstants.BoolType && item.ToString().StartsWith("value(");
if (isFirst && isIIF && isConst)
{
var value = (item as ConstantExpression).Value.ObjToBool() ? this.Context.DbMehtods.True() : this.Context.DbMehtods.False();
@ -465,6 +466,22 @@ namespace SqlSugar
{
model.Args.Add(GetMethodCallArgs(parameter, item));
}
else if (isBoolValue&&!isIIF&& item is MemberExpression)
{
model.Args.Add(GetMethodCallArgs(parameter, (item as MemberExpression).Expression));
}
else if (isBoolValue && isIIF && item is MemberExpression)
{
var argItem = GetMethodCallArgs(parameter, (item as MemberExpression).Expression);
if (argItem.IsMember)
{
var pName = this.Context.SqlParameterKeyWord + "true_0";
if(!this.Context.Parameters.Any(it=>it.ParameterName== pName))
this.Context.Parameters.Add(new SugarParameter(pName, true));
argItem.MemberName = $" {argItem.MemberName}={pName} ";
}
model.Args.Add(argItem);
}
else
{
AppendModel(parameter, model, item);