public override string Translate(LambdaExpression expr) { var newExpr = expr.Body as NewExpression; if (newExpr != null) { foreach (var member in newExpr.Members) { _mapContainer.SetAlias(member.Name); } } Visit(expr.Body); //判断是否为多表操作,如果是多表操作则设置 bool multiple = expr.Parameters.Count > 0; TranslatorDelegate.SetMultipleType(); foreach (var item in _mapContainer.MemberAliasMaps) { if (multiple) { SqlBuilder.Append($"`{TranslatorDelegate.GetTypeAlias(item.Member.DeclaringType)}`."); } SqlBuilder.Append($"`{TranslatorDelegate.GetMemberMap(item.Member)}] AS [{item.Alias}`,"); } SqlBuilder.Remove(SqlBuilder.Length - 1, 1); return(SqlBuilder.ToString()); }
public override string Translate(LambdaExpression expr) { var newExpr = expr.Body as NewExpression; if (newExpr != null) { foreach (var member in newExpr.Members) { _mapContainer.SetAlias(member.Name); } } Visit(expr.Body); SqlBuilder.Append($" GROUP BY"); foreach (var item in _mapContainer.MemberAliasMaps) { if (TranslatorDelegate.IsMultipleType()) { _groupByBuilder.Append($"`{TranslatorDelegate.GetTypeAlias(item.Member.DeclaringType)}`."); } _groupByBuilder.Append($"`{TranslatorDelegate.GetMemberMap(item.Member)}`,"); } _groupByBuilder.Remove(SqlBuilder.Length - 1, 1); SqlBuilder.Append(_groupByBuilder); return(SqlBuilder.ToString()); }