From c39d4490542d72f3ef6327a19ed7e455d05f3760 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sun, 31 Jan 2021 01:01:33 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20SqlExt.DistinctCount?= =?UTF-8?q?=20=E6=89=A9=E5=B1=95=E6=96=B9=E6=B3=95=EF=BC=9B#674=20#533?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 9 +++++++++ FreeSql.Tests/FreeSql.Tests/UnitTest5.cs | 12 ++++++++++++ .../FreeSqlGlobalExpressionCallExtensions.cs | 12 ++++++++++++ FreeSql/FreeSql.xml | 8 ++++++++ 4 files changed, 41 insertions(+) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 02eb0609..27909b2e 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -512,5 +512,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs index c2436f29..917dc93f 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs @@ -14,6 +14,18 @@ namespace FreeSql.Tests { public class UnitTest5 { + [Fact] + public void TestDistinctCount() + { + var fsql = g.sqlite; + + var sql = fsql.Select().ToSql(a => SqlExt.DistinctCount(a.status)); + fsql.Select().Aggregate(a => SqlExt.DistinctCount(a.Key.status), out var count); + + Assert.Equal(@"SELECT count(distinct a.""status"") as1 +FROM ""ts_up_dywhere01"" a", sql); + } + [Fact] public void TestUpdateDyWhere() { diff --git a/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs index 69ac375f..1d14724f 100644 --- a/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs +++ b/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs @@ -117,6 +117,18 @@ namespace FreeSql return default(TValue); } + /// + /// count(distinct name) + /// + /// + /// + /// + public static long DistinctCount(T column) + { + expContext.Value.Result = $"count(distinct {expContext.Value.ParsedContent["column"]})"; + return 0; + } + #region 大小判断 /// /// 大于 > diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 6a7e15e8..0f9eda96 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1188,6 +1188,14 @@ + + + count(distinct name) + + + + + 大于 >