mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-01-19 17:51:36 +08:00
Update exp to sql
This commit is contained in:
@@ -424,6 +424,10 @@ namespace OrmTest.Demo
|
||||
Name = x.Name ?? "a"
|
||||
}).ToList();
|
||||
var test31 = db.Queryable<Student>().Where(it=>(it.Name??"a")=="a").ToList();
|
||||
var test32 = db.Queryable<Student>().Where(it => it.Name == null ? true : false).ToList();
|
||||
var test33 = db.Queryable<Student>().Where(it => SqlFunc.IIF(it.Name==null,true ,false)).ToList();
|
||||
var test34 = db.Queryable<Student>().Where(it => SqlFunc.IIF(it.Name == null||1==1, true, false)).ToList();
|
||||
// var test35 = db.Queryable<Student>().Where(it => SqlFunc.IF(it.Id==1).Return(true).End(false)).ToList();
|
||||
}
|
||||
public static void Page()
|
||||
{
|
||||
|
||||
@@ -9,8 +9,10 @@ namespace SqlSugar
|
||||
{
|
||||
public class MethodCallExpressionResolve : BaseResolve
|
||||
{
|
||||
int contextIndex = 0;
|
||||
public MethodCallExpressionResolve(ExpressionParameter parameter) : base(parameter)
|
||||
{
|
||||
contextIndex = this.Context.Index;
|
||||
var express = base.Expression as MethodCallExpression;
|
||||
if (express == null) return;
|
||||
var isLeft = parameter.IsLeft;
|
||||
@@ -250,10 +252,19 @@ namespace SqlSugar
|
||||
new KeyValuePair<string, string>("End","0")
|
||||
});
|
||||
}
|
||||
if (parameter.Context.Index == 3 && parameter.BaseExpression == null &&this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple,ResolveExpressType.WhereSingle)&& (parameter.CurrentExpression is MethodCallExpression) && ((parameter.CurrentExpression as MethodCallExpression).Method.Name.IsIn("ToBool", "ToBoolean")))
|
||||
var isRoot = contextIndex == 2;
|
||||
if (isRoot && parameter.BaseExpression == null &&this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple,ResolveExpressType.WhereSingle)&& (parameter.CurrentExpression is MethodCallExpression) && ((parameter.CurrentExpression as MethodCallExpression).Method.Name.IsIn("ToBool", "ToBoolean")))
|
||||
{
|
||||
methodValue = methodValue + "=1 ";
|
||||
; }
|
||||
if (isRoot && parameter.BaseExpression == null && this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple, ResolveExpressType.WhereSingle) && (parameter.CurrentExpression is ConditionalExpression) && ((parameter.CurrentExpression as ConditionalExpression).Type==UtilConstants.BoolType))
|
||||
{
|
||||
methodValue = methodValue + "=1 ";
|
||||
}
|
||||
if (isRoot && parameter.BaseExpression == null && this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple, ResolveExpressType.WhereSingle) && (parameter.CurrentExpression is MethodCallExpression) && ((parameter.CurrentExpression as MethodCallExpression).Method.Name.IsIn("IIF"))&& (parameter.CurrentExpression as MethodCallExpression).Method.ReturnType==UtilConstants.BoolType)
|
||||
{
|
||||
methodValue = methodValue + "=1 ";
|
||||
}
|
||||
base.AppendValue(parameter, isLeft, methodValue);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user