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();