Update exp to sql

This commit is contained in:
sunkaixuan
2019-04-27 12:14:02 +08:00
parent b5e820c6a8
commit 9889fe3b3b
2 changed files with 15 additions and 5 deletions

View File

@@ -454,6 +454,12 @@ namespace OrmTest.Demo
var test52 = db.Queryable<Student>().Select(it => SqlFunc.IsNull(it.CreateTime, SqlFunc.GetDate())).ToList();
var test53 = db.Queryable<Student>().Select(it => SqlFunc.IsNull(it.CreateTime, SqlFunc.GetDate())).First();
var test54 = db.Queryable<Student>().Where(it => it.CreateTime == test52.First().Value).ToList();
var test55 = db.Queryable<Student>().Select(it => new {
isAny = SqlFunc.Subqueryable<School>().Any()?1:2
}).ToList();
var test56= db.Queryable<Student>().Select(it=> new {
isAny=SqlFunc.Subqueryable<School>().Any()
}).ToList();
}
public static void Page()

View File

@@ -39,12 +39,16 @@ namespace SqlSugar
}
else if (context.Expression is MethodCallExpression)
{
var meExp = ((context.Expression as MethodCallExpression).Object as MethodCallExpression).Arguments[0] as LambdaExpression;
var selfParameterName = meExp.Parameters.First().Name;
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Left as MemberExpression).Expression as ParameterExpression).Name;
if (context.SingleTableNameSubqueryShortName == selfParameterName)
var expArgs = ((context.Expression as MethodCallExpression).Object as MethodCallExpression).Arguments;
if (expArgs != null && expArgs.Any())
{
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Right as MemberExpression).Expression as ParameterExpression).Name;
var meExp = expArgs[0] as LambdaExpression;
var selfParameterName = meExp.Parameters.First().Name;
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Left as MemberExpression).Expression as ParameterExpression).Name;
if (context.SingleTableNameSubqueryShortName == selfParameterName)
{
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Right as MemberExpression).Expression as ParameterExpression).Name;
}
}
}
else if (context.Expression.GetType().Name == "MethodBinaryExpression")