diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 7fa331125..866294bed 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -188,6 +188,15 @@ namespace SqlSugar result.QueryBuilder.JoinQueryInfos.Last().TableName = tableName; return result; } + public ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression) + { + var result = LeftJoin(joinExpression); + if (isLeftJoin == false) + { + result.QueryBuilder.JoinQueryInfos.Remove(result.QueryBuilder.JoinQueryInfos.Last()); + } + return result; + } public ISugarQueryable LeftJoin(Expression> joinExpression) { if (MasterHasWhereFirstJoin()) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs index b79eec668..928566797 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs @@ -20,6 +20,15 @@ namespace SqlSugar { return this.Select(expression).MergeTable(); } + public ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression) + { + var result = LeftJoin(joinExpression); + if (isLeftJoin==false) + { + result.QueryBuilder.JoinQueryInfos.Remove(result.QueryBuilder.JoinQueryInfos.Last()); + } + return result; + } public ISugarQueryable LeftJoin(ISugarQueryable joinQueryable, Expression> joinExpression) { this.Context.InitMappingInfo(); @@ -595,6 +604,15 @@ namespace SqlSugar { return this.Select(expression).MergeTable(); } + public ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression) + { + var result = LeftJoin(joinExpression); + if (isLeftJoin == false) + { + result.QueryBuilder.JoinQueryInfos.Remove(result.QueryBuilder.JoinQueryInfos.Last()); + } + return result; + } public ISugarQueryable LeftJoin(ISugarQueryable joinQueryable, Expression> joinExpression) { this.Context.InitMappingInfo(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index cac7e11cd..67f4a7c96 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -33,6 +33,7 @@ namespace SqlSugar ISugarQueryable RightJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable FullJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable LeftJoin(Expression> joinExpression); + ISugarQueryable LeftJoinIF(bool isLeftJoin,Expression> joinExpression); ISugarQueryable LeftJoin(Expression> joinExpression,string tableName); ISugarQueryable FullJoin(Expression> joinExpression); ISugarQueryable FullJoin(Expression> joinExpression,string tableName); @@ -257,6 +258,7 @@ namespace SqlSugar public partial interface ISugarQueryable : ISugarQueryable { ISugarQueryable SelectMergeTable(Expression> expression); + ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable LeftJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable InnerJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable RightJoin(ISugarQueryable joinQueryable, Expression> joinExpression); @@ -373,6 +375,7 @@ namespace SqlSugar public partial interface ISugarQueryable : ISugarQueryable { ISugarQueryable SelectMergeTable(Expression> expression); + ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable LeftJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable InnerJoin(ISugarQueryable joinQueryable, Expression> joinExpression); ISugarQueryable RightJoin(ISugarQueryable joinQueryable, Expression> joinExpression);