mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 07:22:57 +08:00
Update exp to sql
This commit is contained in:
parent
8cd2668ae5
commit
47d9fe26b7
@ -95,9 +95,28 @@ namespace OrmTest
|
|||||||
a = it.a.Value
|
a = it.a.Value
|
||||||
}).ToSql();
|
}).ToSql();
|
||||||
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
|
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
|
||||||
|
|
||||||
|
Db.CodeFirst.InitTables<UnitDecimal>();
|
||||||
|
|
||||||
|
Db.Queryable<UnitDecimal>().Select(it =>
|
||||||
|
|
||||||
|
new UnitDecimal2
|
||||||
|
{
|
||||||
|
x1 = it.x1 * it.x2
|
||||||
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class UnitDecimal
|
||||||
|
{
|
||||||
|
public decimal x1 { get; set; }
|
||||||
|
public decimal x2 { get; set; }
|
||||||
|
}
|
||||||
|
public class UnitDecimal2 {
|
||||||
|
public decimal? x1 { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统用户表实体模型类
|
/// 系统用户表实体模型类
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -59,7 +59,22 @@ namespace SqlSugar
|
|||||||
else
|
else
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
public static Type GetMemberInfoType(MemberInfo member)
|
||||||
|
{
|
||||||
|
switch (member.MemberType)
|
||||||
|
{
|
||||||
|
case MemberTypes.Event:
|
||||||
|
return ((EventInfo)member).EventHandlerType;
|
||||||
|
case MemberTypes.Field:
|
||||||
|
return ((FieldInfo)member).FieldType;
|
||||||
|
case MemberTypes.Method:
|
||||||
|
return ((MethodInfo)member).ReturnType;
|
||||||
|
case MemberTypes.Property:
|
||||||
|
return ((PropertyInfo)member).PropertyType;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
public static bool IsLogicOperator(string operatorValue)
|
public static bool IsLogicOperator(string operatorValue)
|
||||||
{
|
{
|
||||||
return operatorValue == "&&" || operatorValue == "||"||operatorValue == "AND" || operatorValue == "OR";
|
return operatorValue == "&&" || operatorValue == "||"||operatorValue == "AND" || operatorValue == "OR";
|
||||||
|
@ -242,10 +242,28 @@ namespace SqlSugar
|
|||||||
MemberAssignment memberAssignment = (MemberAssignment)binding;
|
MemberAssignment memberAssignment = (MemberAssignment)binding;
|
||||||
var memberName = memberAssignment.Member.Name;
|
var memberName = memberAssignment.Member.Name;
|
||||||
var item = memberAssignment.Expression;
|
var item = memberAssignment.Expression;
|
||||||
|
if (IsNullable(item) && item is UnaryExpression)
|
||||||
|
{
|
||||||
|
var memtype = ExpressionTool.GetMemberInfoType(memberAssignment.Member);
|
||||||
|
if (IsNullable(memtype) && UtilMethods.GetUnderType(memtype) == UtilMethods.GetUnderType(item.Type))
|
||||||
|
{
|
||||||
|
item = (item as UnaryExpression).Operand;
|
||||||
|
}
|
||||||
|
}
|
||||||
ResolveNewExpressions(parameter, item, memberName);
|
ResolveNewExpressions(parameter, item, memberName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsNullable(Type memtype)
|
||||||
|
{
|
||||||
|
return memtype.Name == "Nullable`1";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsNullable(Expression item)
|
||||||
|
{
|
||||||
|
return item.Type.Name == "Nullable`1";
|
||||||
|
}
|
||||||
|
|
||||||
//private bool IsSubMethod(MethodCallExpression express)
|
//private bool IsSubMethod(MethodCallExpression express)
|
||||||
//{
|
//{
|
||||||
// return SubTools.SubItemsConst.Any(it =>express.Object != null && express.Object.Type.Name == "Subqueryable`1");
|
// return SubTools.SubItemsConst.Any(it =>express.Object != null && express.Object.Type.Name == "Subqueryable`1");
|
||||||
|
Loading…
Reference in New Issue
Block a user