Update exp to sql

This commit is contained in:
sunkaixuan 2019-06-02 18:32:57 +08:00
parent eca4986054
commit 1e6f2496ad
2 changed files with 24 additions and 2 deletions

View File

@ -62,7 +62,11 @@ namespace OrmTest
var list4 = Db.Queryable<Order>()
.Where(p => new List<int> { 1, 2, 3 }.Where(b => b > 1).Contains(p.Id)).ToList();
Db.CodeFirst.InitTables<UnitTest3>();
var list5 = Db.Queryable<UnitTest3>().Where(it => SqlSugar.SqlFunc.ToString(it.Date.Value.Year) == "1").ToList();
var list6 = Db.Queryable<UnitTest3>().Where(it => it.Date.Value.Year ==1).ToList();
var list7 = Db.Queryable<UnitTest3>().Where(it => it.Date.Value.Date==DateTime.Now.Date).ToList();
}
public static class IEnumerbleContains
@ -79,6 +83,11 @@ namespace OrmTest
}
}
public class UnitTest3
{
public DateTime? Date { get; set; }
}
public class UnitSelectTest2
{

View File

@ -417,6 +417,10 @@ namespace SqlSugar
{
parameter.CommonTempData = GetNewExpressionValue(item);
}
else if (IsDateValue(item))
{
parameter.CommonTempData = GetNewExpressionValue(item);
}
else if (model.Name == "ToString" && item is ConstantExpression && (item as ConstantExpression).Type.IsEnum())
{
parameter.CommonTempData = item.ToString();
@ -443,7 +447,7 @@ namespace SqlSugar
methodCallExpressionArgs.IsMember = false;
}
}
if (IsDateDate(item))
if (IsDateDate(item)||IsDateValue(item))
{
methodCallExpressionArgs.IsMember = true;
}
@ -470,6 +474,15 @@ namespace SqlSugar
{
return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date"&&item.ToString()!= "DateTime.Now.Date";
}
private static bool IsDateValue(Expression item)
{
return item.Type == UtilConstants.IntType &&
item is MemberExpression &&
(item as MemberExpression).Expression!=null&&
(item as MemberExpression).Expression.Type==UtilConstants.DateType&&
(item as MemberExpression).Expression is MemberExpression&&
((item as MemberExpression).Expression as MemberExpression).Member.Name=="Value";
}
private object GetMethodValue(string name, MethodCallExpressionModel model)
{