From e4b51e5d207ff4747636ce7a034774989cc024b5 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 14 Aug 2020 03:06:11 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20ISelect<2..10>=20?= =?UTF-8?q?=E5=A4=9A=E8=A1=A8=20WithSql=20=E6=96=B9=E6=B3=95=20#413?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 16 --------------- .../SqlServer/Curd/SqlServerSelectTest.cs | 11 ++++++++++ FreeSql/Interface/Curd/ISelect/ISelect10.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect2.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect3.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect4.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect5.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect6.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect7.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect8.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect9.cs | 2 ++ .../SelectProvider/Select10Provider.cs | 20 +++++++++++++++++++ .../SelectProvider/Select1Provider.cs | 2 +- .../SelectProvider/Select2Provider.cs | 12 +++++++++++ .../SelectProvider/Select3Provider.cs | 13 ++++++++++++ .../SelectProvider/Select4Provider.cs | 14 +++++++++++++ .../SelectProvider/Select5Provider.cs | 15 ++++++++++++++ .../SelectProvider/Select6Provider.cs | 16 +++++++++++++++ .../SelectProvider/Select7Provider.cs | 17 ++++++++++++++++ .../SelectProvider/Select8Provider.cs | 18 +++++++++++++++++ .../SelectProvider/Select9Provider.cs | 19 ++++++++++++++++++ 21 files changed, 174 insertions(+), 17 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 2acb6679..5ca74890 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -130,13 +130,6 @@ 清空状态数据 - - - 根据 lambda 条件删除数据 - - - - 添加 @@ -527,14 +520,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs index 2c73658e..2f9398d8 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs @@ -1064,6 +1064,17 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title] .WithSql("SELECT * FROM [tb_topic22] where id = 10") .WithSql("SELECT * FROM [tb_topic22] where id = 11") .ToDataTable("*"); + + var multiWithSql = g.sqlite.Select() + .WithSql( + "select * from TestInclude_OneToManyModel1 where id=@id1", + "select * from TestInclude_OneToManyModel2 where model2id=@id2", + null, + new { id1 = 10, id2 = 11, id3 = 13 } + ) + .LeftJoin((a, b, c) => b.model2id == a.id) + .LeftJoin((a, b, c) => c.model2111Idaaa == b.model2id) + .ToList(); } public class TestInclude_OneToManyModel1 diff --git a/FreeSql/Interface/Curd/ISelect/ISelect10.cs b/FreeSql/Interface/Curd/ISelect/ISelect10.cs index f041b8b1..e4cdafd6 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect10.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect10.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, string sqlT10, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect2.cs b/FreeSql/Interface/Curd/ISelect/ISelect2.cs index 3bbd6b0c..bd9692e5 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect2.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect2.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect3.cs b/FreeSql/Interface/Curd/ISelect/ISelect3.cs index 1dc6e71e..00836d0a 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect3.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect3.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect4.cs b/FreeSql/Interface/Curd/ISelect/ISelect4.cs index 29bc56f6..8890624b 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect4.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect4.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect5.cs b/FreeSql/Interface/Curd/ISelect/ISelect5.cs index a82866c7..f8d6cd7e 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect5.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect5.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect6.cs b/FreeSql/Interface/Curd/ISelect/ISelect6.cs index 16be4dfc..63db674e 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect6.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect6.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect7.cs b/FreeSql/Interface/Curd/ISelect/ISelect7.cs index be8873c9..fc99ef10 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect7.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect7.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect8.cs b/FreeSql/Interface/Curd/ISelect/ISelect8.cs index a61b4955..836ee3fb 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect8.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect8.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Interface/Curd/ISelect/ISelect9.cs b/FreeSql/Interface/Curd/ISelect/ISelect9.cs index ff8ff51d..8f44436d 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect9.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect9.cs @@ -55,5 +55,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + + ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, object parms = null); } } \ No newline at end of file diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs index a62868c4..8f9a4398 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs @@ -36,6 +36,26 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T10)), Alias = $"SP10j", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, string sqlT10, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type) return $"( {sqlT5} )"; + if (type == _tables[5].Table?.Type) return $"( {sqlT6} )"; + if (type == _tables[6].Table?.Type) return $"( {sqlT7} )"; + if (type == _tables[7].Table?.Type) return $"( {sqlT8} )"; + if (type == _tables[8].Table?.Type) return $"( {sqlT9} )"; + if (type == _tables[9].Table?.Type) return $"( {sqlT10} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8};\r\n{sqlT9};\r\n{sqlT10}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return 0; diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs index 4519bad1..f4a18423 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs @@ -260,7 +260,7 @@ namespace FreeSql.Internal.CommonProvider { this.AsTable((type, old) => { - if (type == _tables.First().Table?.Type) return $"( {sql} )"; + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sql) == false) return $"( {sql} )"; return old; }); if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms)); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs index 0bf4d0fc..79583b79 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs @@ -20,6 +20,18 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T2)), Alias = $"SP10b", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs index ebded494..1ccd1d5c 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs @@ -22,6 +22,19 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T3)), Alias = $"SP10c", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs index 2824aa01..c97b75b7 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs @@ -24,6 +24,20 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T4)), Alias = $"SP10d", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs index 1278e64f..27d8a023 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs @@ -26,6 +26,21 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T5)), Alias = $"SP10e", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs index f4b9caa5..b5fb37c8 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs @@ -28,6 +28,22 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T6)), Alias = $"SP10f", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )"; + if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs index b094c500..52e1c4fb 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs @@ -30,6 +30,23 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T7)), Alias = $"SP10g", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )"; + if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )"; + if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs index fbc2ed51..da9c40a5 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs @@ -32,6 +32,24 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T8)), Alias = $"SP10h", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )"; + if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )"; + if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )"; + if (type == _tables[7].Table?.Type && string.IsNullOrEmpty(sqlT8) == false) return $"( {sqlT8} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs index 021298f4..5bfc03a1 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs @@ -34,6 +34,25 @@ namespace FreeSql.Internal.CommonProvider _tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T9)), Alias = $"SP10i", On = null, Type = SelectTableInfoType.From }); } + ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, object parms) + { + this.AsTable((type, old) => + { + if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )"; + if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )"; + if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )"; + if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )"; + if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )"; + if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )"; + if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )"; + if (type == _tables[7].Table?.Type && string.IsNullOrEmpty(sqlT8) == false) return $"( {sqlT8} )"; + if (type == _tables[8].Table?.Type && string.IsNullOrEmpty(sqlT9) == false) return $"( {sqlT9} )"; + return old; + }); + if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8};\r\n{sqlT9}", parms)); + return this; + } + double ISelect.Avg(Expression> column) { if (column == null) return default(double);