- 增加 ISelect.ToSql 字段别名设置,默认为 AsIndex,可改为 AsProperty;#158

This commit is contained in:
28810 2019-12-17 22:08:12 +08:00
parent 204b6ecd98
commit fe5b98509b
37 changed files with 309 additions and 45 deletions

View File

@ -110,6 +110,13 @@
清空状态数据
</summary>
</member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)">
<summary>
添加

View File

@ -995,6 +995,24 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -922,6 +922,24 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TiOtmModel1

View File

@ -887,6 +887,24 @@ WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -1006,6 +1006,24 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -922,6 +922,24 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TiOtmModel1

View File

@ -978,6 +978,24 @@ WHERE ((((a.""id"")::varchar) in (SELECT b.""title""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -868,6 +868,24 @@ WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -1037,6 +1037,24 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -922,6 +922,24 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TiOtmModel1

View File

@ -995,6 +995,24 @@ WHERE ((((a.""id"")::varchar) in (SELECT b.""title""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -913,6 +913,24 @@ WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -906,6 +906,24 @@ WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title""
select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
var sqlsss = select
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_1" : null)
.AsTable((type, old) => type == typeof(Topic) ? $"{old}_2" : null)
.ToSql(a => new
{
a.Id,
a.Clicks
}, FieldAliasOptions.AsProperty);
var slsld3 = select
.AsTable((type, old) => type == typeof(Topic) ? $"({sqlsss})" : null)
.Page(1, 20)
.ToList(a => new
{
a.Id,
a.Clicks
});
}
public class TestInclude_OneToManyModel1

View File

@ -894,6 +894,17 @@
</summary>
<returns></returns>
</member>
<member name="F:FreeSql.FieldAliasOptions.AsIndex">
<summary>
自动产生 as1, as2, as3 .... 字段别名<para></para>
这种方法可以最大程度防止多表,存在相同字段的问题
</summary>
</member>
<member name="F:FreeSql.FieldAliasOptions.AsProperty">
<summary>
使用属性名作为字段别名
</summary>
</member>
<member name="M:FreeSql.ILinqToSql`1.Select``1(System.Linq.Expressions.Expression{System.Func{`0,``0}})">
<summary>
【linq to sql】专用方法不建议直接使用
@ -1316,12 +1327,13 @@
<typeparam name="TDto"></typeparam>
<returns></returns>
</member>
<member name="M:FreeSql.ISelect`1.ToSql``1(System.Linq.Expressions.Expression{System.Func{`0,``0}})">
<member name="M:FreeSql.ISelect`1.ToSql``1(System.Linq.Expressions.Expression{System.Func{`0,``0}},FreeSql.FieldAliasOptions)">
<summary>
返回即将执行的SQL语句
</summary>
<typeparam name="TReturn">返回类型</typeparam>
<param name="select">选择列</param>
<param name="fieldAlias">字段别名</param>
<returns></returns>
</member>
<member name="M:FreeSql.ISelect`1.ToAggregate``1(System.Linq.Expressions.Expression{System.Func{FreeSql.ISelectGroupingAggregate{`0},``0}})">

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
namespace FreeSql
{
public enum FieldAliasOptions
{
/// <summary>
/// 自动产生 as1, as2, as3 .... 字段别名<para></para>
/// 这种方法可以最大程度防止多表,存在相同字段的问题
/// </summary>
AsIndex,
/// <summary>
/// 使用属性名作为字段别名
/// </summary>
AsProperty
}
}

View File

@ -89,8 +89,9 @@ namespace FreeSql
/// </summary>
/// <typeparam name="TReturn">返回类型</typeparam>
/// <param name="select">选择列</param>
/// <param name="fieldAlias">字段别名</param>
/// <returns></returns>
string ToSql<TReturn>(Expression<Func<T1, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
/// <summary>
/// 执行SQL查询返回指定字段的聚合结果

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, ISelectGroupingAggregate<T6>, ISelectGroupingAggregate<T7>, ISelectGroupingAggregate<T8>, ISelectGroupingAggregate<T9>, ISelectGroupingAggregate<T10>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, ISelectGroupingAggregate<T6>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, ISelectGroupingAggregate<T6>, ISelectGroupingAggregate<T7>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, ISelectGroupingAggregate<T6>, ISelectGroupingAggregate<T7>, ISelectGroupingAggregate<T8>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TMember>> column);

View File

@ -28,7 +28,7 @@ namespace FreeSql
DataTable ToDataTable<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select);
List<TReturn> ToList<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select);
List<TDto> ToList<TDto>();
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select);
string ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex);
TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, ISelectGroupingAggregate<T2>, ISelectGroupingAggregate<T3>, ISelectGroupingAggregate<T4>, ISelectGroupingAggregate<T5>, ISelectGroupingAggregate<T6>, ISelectGroupingAggregate<T7>, ISelectGroupingAggregate<T8>, ISelectGroupingAggregate<T9>, TReturn>> select);
decimal Sum<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TMember>> column);
TMember Min<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TMember>> column);

View File

@ -25,6 +25,7 @@ namespace FreeSql.Internal
_common = common;
}
internal const int ReadAnonymousFieldAsCsName = -53129;
public bool ReadAnonymousField(List<SelectTableInfo> _tables, StringBuilder field, ReadAnonymousTypeInfo parent, ref int index, Expression exp, Func<Expression[], string> getSelectGroupingMapString, List<LambdaExpression> whereCascadeExpression, bool isAllDtoMap)
{
Func<ExpTSC> getTSC = () => new ExpTSC { _tables = _tables, getSelectGroupingMapString = getSelectGroupingMapString, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereCascadeExpression = whereCascadeExpression };
@ -37,6 +38,7 @@ namespace FreeSql.Internal
parent.DbField = $"-({ExpressionLambdaToSql(exp, getTSC())})";
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(" as").Append(++index);
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(" ").Append(parent.CsName);
return false;
case ExpressionType.Convert: return ReadAnonymousField(_tables, field, parent, ref index, (exp as UnaryExpression)?.Operand, getSelectGroupingMapString, whereCascadeExpression, isAllDtoMap);
case ExpressionType.Constant:
@ -54,6 +56,7 @@ namespace FreeSql.Internal
parent.DbField = _common.FormatSql("{0}", constExp?.Value);
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(" as").Append(++index);
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(" ").Append(parent.CsName);
return false;
case ExpressionType.Call:
var callExp = exp as MethodCallExpression;
@ -70,6 +73,7 @@ namespace FreeSql.Internal
parent.DbField = ExpressionLambdaToSql(exp, getTSC());
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(" as").Append(++index);
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(" ").Append(parent.CsName);
return false;
case ExpressionType.Parameter:
case ExpressionType.MemberAccess:
@ -102,6 +106,7 @@ namespace FreeSql.Internal
parent.DbField = ExpressionLambdaToSql(exp, getTSC());
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(" as").Append(++index);
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(" ").Append(parent.CsName);
parent.MapType = SearchColumnByField(_tables, null, parent.DbField)?.Attribute.MapType ?? exp.Type;
return false;
}
@ -219,6 +224,7 @@ namespace FreeSql.Internal
parent.DbField = $"({ExpressionLambdaToSql(exp, getTSC())})";
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(" as").Append(++index);
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(" ").Append(parent.CsName);
return false;
}
public object ReadAnonymous(ReadAnonymousTypeInfo parent, DbDataReader dr, ref int index, bool notRead, ReadAnonymousDbValueRef dbValue)

View File

@ -525,11 +525,11 @@ namespace FreeSql.Internal.CommonProvider
return ToListMrPrivate<TReturn>(sql, af, otherData);
}
protected List<TReturn> ToListMapReader<TReturn>((ReadAnonymousTypeInfo map, string field) af) => ToListMapReaderPrivate<TReturn>(af, null);
protected (ReadAnonymousTypeInfo map, string field) GetExpressionField(Expression newexp)
protected (ReadAnonymousTypeInfo map, string field) GetExpressionField(Expression newexp, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
var map = new ReadAnonymousTypeInfo();
var field = new StringBuilder();
var index = 0;
var index = fieldAlias == FieldAliasOptions.AsProperty ? CommonExpression.ReadAnonymousFieldAsCsName : 0;
_commonExpression.ReadAnonymousField(_tables, field, map, ref index, newexp, null, _whereCascadeExpression, true);
return (map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
@ -1059,9 +1059,9 @@ namespace FreeSql.Internal.CommonProvider
protected TSelect InternalOrderByDescending(Expression column) => this.OrderBy($"{_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, column, true, null)} DESC");
protected List<TReturn> InternalToList<TReturn>(Expression select) => this.ToListMapReader<TReturn>(this.GetExpressionField(select));
protected string InternalToSql<TReturn>(Expression select)
protected string InternalToSql<TReturn>(Expression select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
var af = this.GetExpressionField(select);
var af = this.GetExpressionField(select, fieldAlias);
return this.ToSql(af.field);
}

View File

@ -121,11 +121,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> exp)

View File

@ -263,11 +263,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
public string ToSql<TReturn>(Expression<Func<T1, TReturn>> select)
public string ToSql<TReturn>(Expression<Func<T1, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
_tables[0].Parameter = select.Parameters[0];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
public TReturn ToAggregate<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, TReturn>> select)

View File

@ -98,11 +98,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2>.ToSql<TReturn>(Expression<Func<T1, T2, TReturn>> select)
string ISelect<T1, T2>.ToSql<TReturn>(Expression<Func<T1, T2, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2> ISelect<T1, T2>.LeftJoin(Expression<Func<T1, T2, bool>> exp)

View File

@ -101,11 +101,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3>.ToSql<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select)
string ISelect<T1, T2, T3>.ToSql<TReturn>(Expression<Func<T1, T2, T3, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3> ISelect<T1, T2, T3>.LeftJoin(Expression<Func<T1, T2, T3, bool>> exp)

View File

@ -104,11 +104,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select)
string ISelect<T1, T2, T3, T4>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4> ISelect<T1, T2, T3, T4>.LeftJoin(Expression<Func<T1, T2, T3, T4, bool>> exp)

View File

@ -107,11 +107,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5> ISelect<T1, T2, T3, T4, T5>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, bool>> exp)

View File

@ -110,11 +110,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5, T6>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5, T6>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5, T6> ISelect<T1, T2, T3, T4, T5, T6>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, T6, bool>> exp)

View File

@ -113,11 +113,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5, T6, T7>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5, T6, T7>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5, T6, T7> ISelect<T1, T2, T3, T4, T5, T6, T7>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, T6, T7, bool>> exp)

View File

@ -117,11 +117,11 @@ namespace FreeSql.Internal.CommonProvider
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5, T6, T7, T8> ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, bool>> exp)

View File

@ -117,11 +117,11 @@ namespace FreeSql.Internal.CommonProvider
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToDataTable(select?.Body);
}
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select)
string ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.ToSql<TReturn>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TReturn>> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex)
{
if (select == null) return this.InternalToSql<TReturn>(select?.Body);
if (select == null) return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
for (var a = 0; a < select.Parameters.Count; a++) _tables[a].Parameter = select.Parameters[a];
return this.InternalToSql<TReturn>(select?.Body);
return this.InternalToSql<TReturn>(select?.Body, fieldAlias);
}
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.LeftJoin(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, bool>> exp)