diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index dc0203b8..d9f91124 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -110,6 +110,13 @@ 清空状态数据 + + + 根据 lambda 条件删除数据 + + + + 添加 diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 3c47d4cb..947162a6 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1707,6 +1707,14 @@ 即能 ThenInclude,还可以二次过滤(这个 EFCore 做不到?) + + + 实现 select .. from ( select ... from t ) a 这样的功能 + 使用 AsTable 方法也可以达到效果 + + SQL语句 + + 查询条件,Where(a => a.Id > 10),支持导航对象查询,Where(a => a.Author.Email == "2881099@qq.com") diff --git a/FreeSql/Interface/Curd/ISelect/ISelect1.cs b/FreeSql/Interface/Curd/ISelect/ISelect1.cs index 32e296d2..34c9ce6d 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect1.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect1.cs @@ -369,5 +369,13 @@ namespace FreeSql /// 即能 ThenInclude,还可以二次过滤(这个 EFCore 做不到?) /// ISelect IncludeMany(Expression>> navigateSelector, Action> then = null) where TNavigate : class; + + /// + /// 实现 select .. from ( select ... from t ) a 这样的功能 + /// 使用 AsTable 方法也可以达到效果 + /// + /// SQL语句 + /// + ISelect WithSql(string sql); } } \ No newline at end of file diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs index 30d3615f..ca3d3f8b 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs @@ -329,6 +329,16 @@ namespace FreeSql.Internal.CommonProvider return this; } + public ISelect WithSql(string sql) + { + this.AsTable((type, old) => + { + if (type == _tables.First().Table?.Type) return $"( {sql} )"; + return old; + }); + return this; + } + public bool Any(Expression> exp) => this.Where(exp).Any(); public TReturn ToOne(Expression> select) => this.Limit(1).ToList(select).FirstOrDefault();