From b89c05d2bc3796082b50cb8c7f7618f5220b344d Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 25 May 2019 07:29:17 +0800 Subject: [PATCH] Add SqlFunc.AggregateDistinctCount --- .../SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs | 6 ++++++ .../SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs | 1 + .../ResolveItems/MethodCallExpressionResolve.cs | 2 ++ 3 files changed, 9 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index f170c51e1..ea8c06048 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -264,6 +264,12 @@ namespace SqlSugar return string.Format("COUNT({0})", parameter.MemberName); } + public virtual string AggregateDistinctCount(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format("COUNT(DISTINCT{0})", parameter.MemberName); + } + public virtual string MappingColumn(MethodCallExpressionModel model) { var parameter = model.Args[0]; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 8ede5cbab..5f4845c6f 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -48,6 +48,7 @@ namespace SqlSugar string AggregateMin(MethodCallExpressionModel model); string AggregateMax(MethodCallExpressionModel model); string AggregateCount(MethodCallExpressionModel model); + string AggregateDistinctCount(MethodCallExpressionModel model); string MappingColumn(MethodCallExpressionModel model); string IsNull(MethodCallExpressionModel model); string GetSelfAndAutoFill(string shortName,bool isSingle); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 360df84d6..8a851f7af 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -578,6 +578,8 @@ namespace SqlSugar return this.Context.DbMehtods.AggregateMax(model); case "AggregateCount": return this.Context.DbMehtods.AggregateCount(model); + case "AggregateDistinctCount": + return this.Context.DbMehtods.AggregateDistinctCount(model); case "MappingColumn": var mappingColumnResult = this.Context.DbMehtods.MappingColumn(model); var isValid = model.Args[0].IsMember && model.Args[1].IsMember == false;