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>() var list4 = Db.Queryable<Order>()
.Where(p => new List<int> { 1, 2, 3 }.Where(b => b > 1).Contains(p.Id)).ToList(); .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 public static class IEnumerbleContains
@ -79,6 +83,11 @@ namespace OrmTest
} }
} }
public class UnitTest3
{
public DateTime? Date { get; set; }
}
public class UnitSelectTest2 public class UnitSelectTest2
{ {

View File

@ -417,6 +417,10 @@ namespace SqlSugar
{ {
parameter.CommonTempData = GetNewExpressionValue(item); 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()) else if (model.Name == "ToString" && item is ConstantExpression && (item as ConstantExpression).Type.IsEnum())
{ {
parameter.CommonTempData = item.ToString(); parameter.CommonTempData = item.ToString();
@ -443,7 +447,7 @@ namespace SqlSugar
methodCallExpressionArgs.IsMember = false; methodCallExpressionArgs.IsMember = false;
} }
} }
if (IsDateDate(item)) if (IsDateDate(item)||IsDateValue(item))
{ {
methodCallExpressionArgs.IsMember = true; 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"; 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) private object GetMethodValue(string name, MethodCallExpressionModel model)
{ {