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)
+
+
+
+
+
大于 >