From c75cdc51ae18a1fe62c107bb841d17b6c2de0d8b Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Thu, 3 Sep 2020 18:22:06 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20=20ISelect`2-10=20Orde?= =?UTF-8?q?rByIf=20=E6=96=B9=E6=B3=95=20#446=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.Tests/FreeSql.Tests/UnitTest3.cs | 2 ++ FreeSql/Interface/Curd/ISelect/ISelect10.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect2.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect3.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect4.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect5.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect6.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect7.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect8.cs | 1 + FreeSql/Interface/Curd/ISelect/ISelect9.cs | 1 + .../CommonProvider/SelectProvider/Select10Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select2Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select3Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select4Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select5Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select6Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select7Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select8Provider.cs | 7 +++++++ .../CommonProvider/SelectProvider/Select9Provider.cs | 7 +++++++ 19 files changed, 74 insertions(+) diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs index dcfab4da..eccdba92 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs @@ -231,6 +231,8 @@ namespace FreeSql.Tests Id = a.Key, EdiId1 = SqlExt.Max(a.Key).Over().PartitionBy(new { a.Value.EdiId, a.Value.Id }).OrderByDescending(new { a.Value.EdiId, a.Value.Id }).ToValue(), EdiId2 = SqlExt.Max(a.Key).Over().PartitionBy(a.Value.EdiId).OrderByDescending(a.Value.Id).ToValue(), + + Sub1 = g.sqlite.Select().Where(b => b.Id == a.Key).Count() }); var sqlextGroupConcat = g.mysql.Select() diff --git a/FreeSql/Interface/Curd/ISelect/ISelect10.cs b/FreeSql/Interface/Curd/ISelect/ISelect10.cs index 2d1107e4..1acf96da 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect10.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect10.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression < Func> column, bool descending = false); 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); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect2.cs b/FreeSql/Interface/Curd/ISelect/ISelect2.cs index b7890fec..6bcdaac6 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect2.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect2.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect3.cs b/FreeSql/Interface/Curd/ISelect/ISelect3.cs index 413bbe72..ea441d28 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect3.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect3.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect4.cs b/FreeSql/Interface/Curd/ISelect/ISelect4.cs index cfd3b6ac..28e2c5f1 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect4.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect4.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect5.cs b/FreeSql/Interface/Curd/ISelect/ISelect5.cs index b26c016d..d1947791 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect5.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect5.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect6.cs b/FreeSql/Interface/Curd/ISelect/ISelect6.cs index e3c46a93..700cdf03 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect6.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect6.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect7.cs b/FreeSql/Interface/Curd/ISelect/ISelect7.cs index 23fd0fbc..d7117d0c 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect7.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect7.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect8.cs b/FreeSql/Interface/Curd/ISelect/ISelect8.cs index 22e2b933..8ed0514a 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect8.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect8.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, object parms = null); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect9.cs b/FreeSql/Interface/Curd/ISelect/ISelect9.cs index 87463c8e..96da6b7a 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect9.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect9.cs @@ -56,6 +56,7 @@ namespace FreeSql ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, object parms = null); } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs index cfbdf04e..4058a933 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs @@ -98,6 +98,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs index 722e98ad..b6617bc4 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs @@ -74,6 +74,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs index a1a0482f..502b1e04 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs @@ -77,6 +77,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs index 7ad1d657..c7f86211 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs @@ -80,6 +80,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs index 8d370dca..1624a6ed 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs @@ -83,6 +83,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs index 24017074..c63eba00 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs @@ -86,6 +86,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs index be823cc8..1a583037 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs @@ -89,6 +89,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs index 4f24a463..35f87674 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs @@ -92,6 +92,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body); diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs index 33625d93..7f3d0505 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs @@ -95,6 +95,13 @@ namespace FreeSql.Internal.CommonProvider return this.InternalOrderByDescending(column?.Body); } + ISelect ISelect.OrderByIf(bool condition, Expression> column, bool descending) + { + if (condition == false || column == null) this.InternalOrderBy(column?.Body); + for (var a = 0; a < column.Parameters.Count; a++) _tables[a].Parameter = column.Parameters[a]; + return descending ? this.InternalOrderByDescending(column?.Body) : this.InternalOrderBy(column?.Body); + } + decimal ISelect.Sum(Expression> column) { if (column == null) this.InternalOrderBy(column?.Body);