using System; using System.Linq.Expressions; namespace CommonUtil.Db { /// /// 表达式工具类 /// /// public class ExpressionUtil where T : class, new() { /// /// /// Expression> _exp = null; /// /// AND 条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = it => true; return _exp; } } /// /// 表达式工具类 /// /// /// public class ExpressionUtil where T : class, new() where T2 : class, new() { Expression> _exp = null; /// /// AND条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = (it, t2) => true; return _exp; } } /// /// 表达式工具类 /// /// /// /// public class ExpressionUtil where T : class, new() where T2 : class, new() where T3 : class, new() { Expression> _exp = null; /// /// AND条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = (it, t2, t3) => true; return _exp; } } /// /// /表达式工具类 /// /// /// /// /// public class ExpressionUtil where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() { Expression> _exp = null; /// /// AND条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = (it, t2, t3, t4) => true; return _exp; } } /// /// 表达式工具类 /// /// /// /// /// /// public class ExpressionUtil where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() where T5 : class, new() { Expression> _exp = null; /// /// AND条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = (it, t2, t3, t4, T5) => true; return _exp; } } /// /// 表达式工具类 /// /// /// /// /// /// /// public class ExpressionUtil where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() where T5 : class, new() where T6 : class, new() { Expression> _exp = null; /// /// AND条件 /// /// /// public ExpressionUtil And(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.AndAlso(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行AND条件 /// /// /// /// public ExpressionUtil AndIF(bool isAnd, Expression> exp) { if (isAnd) And(exp); return this; } /// /// OR条件 /// /// /// public ExpressionUtil Or(Expression> exp) { if (_exp == null) _exp = exp; else _exp = Expression.Lambda>(Expression.OrElse(_exp.Body, exp.Body), _exp.Parameters); return this; } /// /// IF成立则执行OR条件 /// /// /// /// public ExpressionUtil OrIF(bool isOr, Expression> exp) { if (isOr) Or(exp); return this; } /// /// 转换表达式 /// /// public Expression> ToExpression() { if (_exp == null) _exp = (it, t2, t3, t4, T5, t6) => true; return _exp; } } /// /// 表达式工具类 /// public class ExpressionUtil { /// /// 创建表达式 /// /// /// public static ExpressionUtil Create() where T : class, new() { return new ExpressionUtil(); } /// /// 创建表达式 /// /// /// /// public static ExpressionUtil Create() where T : class, new() where T2 : class, new() { return new ExpressionUtil(); } /// /// 创建表达式 /// /// /// /// /// public static ExpressionUtil Create() where T : class, new() where T2 : class, new() where T3 : class, new() { return new ExpressionUtil(); } /// /// 创建表达式 /// /// /// /// /// /// public static ExpressionUtil Create() where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() { return new ExpressionUtil(); } /// /// 创建表达式 /// /// /// /// /// /// /// public static ExpressionUtil Create() where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() where T5 : class, new() { return new ExpressionUtil(); } /// /// 创建表达式 /// /// /// /// /// /// /// /// public static ExpressionUtil Create() where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new() where T5 : class, new() where T6 : class, new() { return new ExpressionUtil(); } } }