| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Text;
- namespace SqlSugar
- {
- public class SubGroupBy : ISubOperation
- {
- public bool HasWhere
- {
- get; set;
- }
- public string Name
- {
- get { return "GroupBy"; }
- }
- public Expression Expression
- {
- get; set;
- }
- public int Sort
- {
- get
- {
- return 479;
- }
- }
- public ExpressionContext Context
- {
- get; set;
- }
- public string GetValue(Expression expression)
- {
- var exp = expression as MethodCallExpression;
- var argExp = exp.Arguments[0];
- var type = ResolveExpressType.FieldSingle;
- if ((argExp as LambdaExpression).Body is NewExpression) {
- type = ResolveExpressType.ArraySingle;
- }
- var result = "GROUP BY ";
- if (this.Context.JoinIndex == 0)
- {
- result = result + SubTools.GetMethodValue(this.Context, argExp, type);
- }
- else
- {
- if (type == ResolveExpressType.ArraySingle)
- {
- type= ResolveExpressType.ArrayMultiple;
- }
- else if (type == ResolveExpressType.FieldSingle)
- {
- type = ResolveExpressType.FieldMultiple;
- }
- else if (type == ResolveExpressType.WhereSingle)
- {
- type = ResolveExpressType.WhereMultiple;
- }
- result = result + SubTools.GetMethodValueSubJoin(this.Context, argExp, type);
- }
- result = result.TrimEnd(',');
- var selfParameterName = this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name) + UtilConstants.Dot;
- if (this.Context.JoinIndex == 0)
- result = result.Replace(selfParameterName, SubTools.GetSubReplace(this.Context));
- if (this.Context.CurrentShortName == null)
- {
- this.Context.CurrentShortName =this.Context.GetTranslationColumnName(ExpressionTool.GetParameters(exp).FirstOrDefault().Name);
- }
- return result;
- }
- }
- }
|