重新测试发现在这里
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Person.Core.Expressions.DataQuery;
namespace Person.Core.Expressions
{
public interface IStdQueryExpression
{
}
public abstract class StdQueryExpression :
IStdQueryExpression,
ICompareExpressionGroup,
IFilterExpressionGroup,
ILogicalExpressionGroup,
IBitwiseOperator
{
public abstract class Operator : IOperator
{
public virtual object As(object value)
{
if (value is IExpressionObject)
{
return this.AsValue((IExpressionObject)value);
}
else if (value is string)
{
return this.As((string)value);
}
else if (value is char)
{
return this.As((char)value);
}
else if (value is DateTime)
{
return this.As((DateTime)value);
}
return value;
}
public abstract object AsValue(IExpressionObject value);
public abstract object As(string value);
public abstract object As(char value);
public abstract object As(DateTime value);
#region IOperator 成员
public abstract object Execute(IOperator parentOperator, object[] parameters);
#endregion
}
public static Expression Create(IOperator operator1, object[] parameters)
{
return new Expression(operator1, parameters);
}
//实际上在这里已经形成SQL
/*new Expression(operator1, parameters)
{ZhouAo.Core.Expressions.Expression}
_converter: null
_value: null
Operator: {ZhouAo.Core.Expressions.MSSQLQuery.SelectOperator}
Parameters: {object[5]}
ParentOperator: null
Value: "SELECT * FROM MoneyItems WHERE 30 = MoneyItems.TargetID" */
#region ICompareExpressionGroup 成员
public abstract Expression Equals(params object[] parameters);
public abstract Expression Greater(params object[] parameters);
public abstract Expression Less(params object[] parameters);
public abstract Expression GreaterOrEquals(params object[] parameters);
public abstract Expression LessOrEquals(params object[] parameters);
public abstract Expression NotEquals(params object[] parameters);
public abstract Expression IsNull(params object[] parameters);
public abstract Expression IsNotNull(params object[] parameters);
public abstract Expression IsEmpty(params object[] parameters);
public abstract Expression IsNotEmpty(params object[] parameters);
#endregion
#region IFilterExpressionGroup 成员
public abstract Expression Match(params object[] parameters);
public abstract Expression Contains(params object[] parameters);
public abstract Expression Search(params object[] parameters);
public abstract Expression In(params object[] parameters);
public abstract Expression NotIn(params object[] parameters);
public abstract Expression Between(params object[] parameters);
#endregion
#region ILogicalExpressionGroup 成员
public abstract Expression Or(params object[] parameters);
public abstract Expression And(params object[] parameters);
#endregion
#region IBitwiseOperator 成员
public abstract Expression BitIn(params object[] parameters);
public abstract Expression BitNotIn(params object[] parameters);
public abstract Expression BitAnyIn(params object[] parameters);
#endregion
public abstract Expression Select(params object[] parameters);
public abstract Expression Join(params object[] parameters);
public abstract Expression Desc(params object[] parameters);
public abstract Expression Asc(params object[] parameters);
}
}