> aiExpWhenFalse)
{
AddOrWhere(aiCondition(), aiExpWhenTrue, aiExpWhenFalse);
}
#endregion 以 Or 相联接 Where条件语句
#region OrderBy语句
///
/// 添加一个OrderBy语句
///
/// OrderBy的字段数据类型
/// OrderBy条件表达示
public void AddOrderBy(Expression> aiExp)
{
SetOneConditionStr(aiExp, LambdaExpUnion.OrderBy);
}
///
/// 如果条件满足时,添加一个OrderBy语句
///
/// OrderBy的字段数据类型
/// 条件
/// OrderBy条件表达示
public void AddOrderBy(bool aiCondition, Expression> aiExp)
{
if (aiCondition)
{
SetOneConditionStr(aiExp, LambdaExpUnion.OrderBy);
}
}
///
/// 如果条件满足时,添加一个OrderBy语句
///
/// OrderBy的数据字段类型
/// Lambda条件
/// OrderBy条件表达示
public void AddOrderBy(Func aiCondition, Expression> aiExp)
{
AddOrderBy(aiCondition(), aiExp);
}
///
/// 如果条件满足时,将添加前一个OrderBy语句,否则添加后一个
///
/// OrderBy的数据字段类型
/// 条件
/// 条件为真时
/// 条件为假时
public void AddOrderBy | (bool aiCondition, Expression> aiExpWhenTrue, Expression> aiExpWhenFalse)
{
if (aiCondition)
{
SetOneConditionStr(aiExpWhenTrue, LambdaExpUnion.OrderBy);
}
else
{
SetOneConditionStr(aiExpWhenFalse, LambdaExpUnion.OrderBy);
}
}
///
/// 如果条件满足时,将添加前一个OrderBy语句,否则添加后一个
///
/// OrderBy的数据字段类型
/// Lambda条件
/// 条件为真时
/// 条件为假时
public void AddOrderBy(Func aiCondition, Expression> aiExpWhenTrue, Expression> aiExpWhenFalse)
{
AddOrderBy(aiCondition(), aiExpWhenTrue, aiExpWhenFalse);
}
#endregion OrderBy语句
#region 内部操作
///
/// Where语句
///
private string _aiWhereStr = string.Empty;
///
/// OrderBy语句
///
private string _aiOrderByStr = string.Empty;
private void SetConditionStr(Expression aiExp, LambdaExpUnion lambdaUion = LambdaExpUnion.And)
{
SetWhere(aiExp);//Where条件句
SetOrderBy(aiExp);//Order by 语句
}
private void SetOneConditionStr(Expression aiExp, LambdaExpUnion bizUion = LambdaExpUnion.And)
{
if ((bizUion == LambdaExpUnion.And) || (bizUion == LambdaExpUnion.Or))
{
SetWhere(aiExp);//Where条件句
}
else if (bizUion == LambdaExpUnion.OrderBy)
{
SetOrderBy(aiExp);//Order by 语句
}
}
private void SetOrderBy(Expression aiExp)
{
var itemstr = ExpressionWriterSql.BizWhereWriteToString(aiExp, SqlType.Order);
if (string.IsNullOrWhiteSpace(_aiOrderByStr))
{
_aiOrderByStr = itemstr;
}
else
{
_aiOrderByStr = _aiOrderByStr + "," + itemstr;
}
}
private void SetWhere(Expression aiExp, LambdaExpUnion bizUion = LambdaExpUnion.And)
{
var itemstr = ExpressionWriterSql.BizWhereWriteToString(aiExp, SqlType.Where);
if (string.IsNullOrWhiteSpace(_aiWhereStr))
{
_aiWhereStr = itemstr;
}
else
{
if (bizUion == LambdaExpUnion.Or)
{
_aiWhereStr = _aiWhereStr + " Or " + itemstr;
}
else
{
_aiWhereStr = _aiWhereStr + " And " + itemstr;
}
}
}
#endregion 内部操作
}
} | | | | | |