- 优化 lambda 使用 a == null ? 1 : 0 支持类似这样直接判断实体的情况;

This commit is contained in:
28810
2020-08-07 01:36:11 +08:00
parent 7efe02f69c
commit 25e73117b1
11 changed files with 94 additions and 51 deletions

View File

@ -496,6 +496,13 @@ namespace FreeSql.Internal
return ExpressionLambdaToSql(Expression.Call(leftExp, MethodDateTimeSubtractTimeSpan, rightExp), tsc);
}
return $"({ExpressionLambdaToSql(leftExp, tsc)} {oper} {ExpressionLambdaToSql(rightExp, tsc)})";
case "=":
case "<>":
var exptb = _common.GetTableByEntity(leftExp.Type);
if (exptb != null) leftExp = Expression.MakeMemberAccess(leftExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value).CsName]);
exptb = _common.GetTableByEntity(leftExp.Type);
if (exptb?.Primarys.Any() == true) rightExp = Expression.MakeMemberAccess(rightExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value).CsName]);
break;
}
Type oldMapType = null;