From 50077cf924a57a8a01380b683c237b0b44cb6b2c Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 26 Mar 2022 10:02:29 +0800 Subject: [PATCH] Update GroupBy exp to sql --- .../SqlServerTest/SqlServerTest.csproj | 1 + Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + .../SqlServerTest/UnitTest/UCustom09.cs | 31 +++++++++++++++++++ .../QueryableProvider/QueryableProvider.cs | 12 ++++++- 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UCustom09.cs diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index 9a0d4c3b3..f11650c52 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -100,6 +100,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index d7a5ae348..e4efbe883 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -31,6 +31,7 @@ namespace OrmTest } public static void Init() { + UCustom09.Init(); UCustom011.Init(); UCustom010.Init(); UCustom08.Init(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UCustom09.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom09.cs new file mode 100644 index 000000000..2d30962c2 --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom09.cs @@ -0,0 +1,31 @@ +using OrmTest.UnitTest.Models; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class UCustom09 + { + public static void Init() + { + var db = NewUnitTest.Db; + var list=db.Queryable() + .GroupBy(x => new { CreateTime = x.CreateTime.ToString("yyyy-MM"),x.Name }) + .Select(x => new { CreateTime = x.CreateTime.ToString("yyyy-MM") }).ToList(); + } + public class Unitasfa1sadfa + { + [SugarColumn(IsPrimaryKey = true)] + public Guid Id { get; set; } + [SugarColumn(IsNullable = true)] + public bool ItemId { get; set; } + + } + + + } +} diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 7e0c8962d..43d021d22 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -1873,11 +1873,21 @@ namespace SqlSugar var isSingle = QueryBuilder.IsSingle(); ExpressionResult lamResult = null; string result = null; - if (expression is NewExpression) + if (expression is NewExpression && !expression.ObjToString().Contains("=")) { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple); result = string.Join(",", lamResult.GetResultArray().Select(it => it)); } + else if (expression is NewExpression) + { + var newExp=expression as NewExpression; + foreach (var item in newExp.Arguments) + { + result += + QueryBuilder.GetExpressionValue(item, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple).GetResultString()+","; + } + result = result.TrimEnd(','); + } else { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);