diff --git a/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs b/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
index c787cc61..3f081a79 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
@@ -19,11 +19,18 @@ namespace FreeSql
#endif
///
- /// 按聚合条件过滤,Where(a => a.Count() > 10)
+ /// 按聚合条件过滤,Having(a => a.Count() > 10)
///
/// lambda表达式
///
ISelectGrouping Having(Expression, bool>> exp);
+ ///
+ /// 按聚合条件过滤,HavingIf(true, a => a.Count() > 10)
+ ///
+ /// true 时生效
+ /// lambda表达式
+ ///
+ ISelectGrouping HavingIf(bool condition, Expression, bool>> exp);
///
/// 按列排序,OrderBy(a => a.Time)
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
index 2f0e0703..383c1ed2 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
@@ -226,6 +226,7 @@ namespace FreeSql.Internal.CommonProvider
return this;
}
+ public ISelectGrouping HavingIf(bool condition, Expression, bool>> exp) => condition ? Having(exp) : this;
public ISelectGrouping Having(Expression, bool>> exp)
{
_lambdaParameter = exp?.Parameters[0];