mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 lambda 表达式树解析子查询 ToList + string.Join() 产生 类似 group_concat 的效果(适配了 sqlserver/pgsql/oracle/mysql/sqlite/达梦/金仓) #405;
This commit is contained in:
		@@ -315,6 +315,20 @@ namespace FreeSql.ShenTong
 | 
			
		||||
                        //4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
 | 
			
		||||
                        var expArgs = expArgsHack.Select(a => $"'||{_common.IsNull(ExpressionLambdaToSql(a, tsc), "''")}||'").ToArray();
 | 
			
		||||
                        return string.Format(ExpressionLambdaToSql(exp.Arguments[0], tsc), expArgs);
 | 
			
		||||
                    case "Join": //未通用测试 #405
 | 
			
		||||
                        if (exp.IsStringJoin(out var tolistObjectExp, out var toListMethod, out var toListArgs1))
 | 
			
		||||
                        {
 | 
			
		||||
                            var newToListArgs0 = Expression.Call(tolistObjectExp, toListMethod,
 | 
			
		||||
                                Expression.Lambda(
 | 
			
		||||
                                    Expression.Call(
 | 
			
		||||
                                        typeof(SqlExtExtensions).GetMethod("StringJoinOracleGroupConcat"),
 | 
			
		||||
                                        Expression.Convert(toListArgs1.Body, typeof(object)),
 | 
			
		||||
                                        Expression.Convert(exp.Arguments[0], typeof(object))),
 | 
			
		||||
                                    toListArgs1.Parameters));
 | 
			
		||||
                            var newToListSql = getExp(newToListArgs0);
 | 
			
		||||
                            return newToListSql;
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user