From 255593a59485a0f0b6ffaa2b6646335624691bfb Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Tue, 31 Dec 2019 16:26:04 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20ISelect`1.WithSql("sel?=
=?UTF-8?q?ect=20*=20from=20user=20...")=20=E5=8A=9F=E8=83=BD=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 7 +++++++
FreeSql/FreeSql.xml | 8 ++++++++
FreeSql/Interface/Curd/ISelect/ISelect1.cs | 8 ++++++++
.../CommonProvider/SelectProvider/Select1Provider.cs | 10 ++++++++++
4 files changed, 33 insertions(+)
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();