SqlSugar/SqlSugar/ExpressionsToSql/ResolveItems/MemberNewExpressionResolve.cs
sunkaixuan fe59b5e7d9 -
2017-01-08 22:43:46 +08:00

44 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class MemberNewExpressionResolve : BaseResolve
{
public MemberNewExpressionResolve(ExpressionParameter parameter) : base(parameter) {
var expression = base.Expression as MemberExpression;
var isLeft = parameter.IsLeft;
var isSingle = parameter.Context.IsSingle;
object value = null;
var isField = expression.Member is System.Reflection.FieldInfo;
var isProperty = expression.Member is System.Reflection.PropertyInfo;
if (isField)
{
value = ExpressionTool.GetFiledValue(expression.Expression as MemberExpression);
}
else if (isProperty)
{
value = ExpressionTool.GetPropertyValue(expression.Expression as MemberExpression);
}
if (parameter.BaseParameter.BinaryExpressionInfoList != null)
{
parameter.BaseParameter.BinaryExpressionInfoList.Add(new KeyValuePair<string, BinaryExpressionInfo>(ExpressionConst.BinaryExpressionInfoListKey, new BinaryExpressionInfo()
{
IsLeft = Convert.ToBoolean(isLeft),
Value = value,
ExpressionType = ExpressionConst.ConstantExpressionType
}));
}
if (isLeft == null && base.Context.SqlWhere == null)
{
base.Context.SqlWhere = new StringBuilder();
base.Context.SqlWhere.Append(value);
}
}
}
}