private ISelectQueryAble <T> SelectParser(Expression expression, Expression expressionBody, params Type[] types) { _SqlBuilder.SetSqlCommandType(SqlCommandType.Select); _SqlBuilder.SetTableAlias(_MainTableName); _SqlBuilder.AppendSelectSql($"SELECT {{0}} FROM {_MainTableName} {_SqlBuilder.GetTableAlias(_MainTableName)} "); var selectQueryAble = new SelectQueryAble <T>(_SqlBuilder, _DapperKitProvider); if (expression != null && expressionBody != null) { if (types != null && types.Length > 0) { _SqlBuilder.SetSelectMultiTable(); foreach (var type in types) { string tableName = type.GetDapperTableName(_SqlBuilder._SqlFormater); _SqlBuilder.SetTableAlias(tableName); //add data table type to collection selectQueryAble.TableTypeCollections.Add(type); } } SqlVistorProvider.Select(expressionBody, _SqlBuilder); } else { _SqlBuilder.AddSelectColumn("* "); _SqlBuilder.AddSelectPageColumn("* "); } return(selectQueryAble); }