Support Select(it=>new class(x,y))

This commit is contained in:
sunkaixuan 2024-05-08 21:22:53 +08:00
parent 9ec80cc153
commit eb9862a2ae
3 changed files with 11 additions and 3 deletions

View File

@ -1884,7 +1884,7 @@ namespace SqlSugar
{ {
result = this.Context.Utilities.DataReaderToSelectArrayList<TResult>(dataReader); result = this.Context.Utilities.DataReaderToSelectArrayList<TResult>(dataReader);
} }
else if (entityType.IsAnonymousType() || isComplexModel|| StaticConfig.EnableAot) else if (QueryBuilder.IsParameterizedConstructor || entityType.IsAnonymousType() || isComplexModel|| StaticConfig.EnableAot)
{ {
if (entityType.IsClass() == false && StaticConfig.EnableAot) if (entityType.IsClass() == false && StaticConfig.EnableAot)
{ {
@ -2073,6 +2073,7 @@ namespace SqlSugar
asyncQueryableBuilder.RemoveFilters = this.QueryBuilder.RemoveFilters?.ToArray(); asyncQueryableBuilder.RemoveFilters = this.QueryBuilder.RemoveFilters?.ToArray();
asyncQueryableBuilder.Hints = this.QueryBuilder.Hints; asyncQueryableBuilder.Hints = this.QueryBuilder.Hints;
asyncQueryableBuilder.MasterDbTableName = this.QueryBuilder.MasterDbTableName; asyncQueryableBuilder.MasterDbTableName = this.QueryBuilder.MasterDbTableName;
asyncQueryableBuilder.IsParameterizedConstructor = this.QueryBuilder.IsParameterizedConstructor;
if (this.QueryBuilder.AppendNavInfo != null) if (this.QueryBuilder.AppendNavInfo != null)
{ {
asyncQueryableBuilder.AppendNavInfo = new AppendNavInfo() asyncQueryableBuilder.AppendNavInfo = new AppendNavInfo()

View File

@ -34,6 +34,7 @@ namespace SqlSugar
#endregion #endregion
#region Splicing basic #region Splicing basic
public bool IsParameterizedConstructor { get; set; }
public string Hints { get; set; } public string Hints { get; set; }
internal AppendNavInfo AppendNavInfo { get; set; } internal AppendNavInfo AppendNavInfo { get; set; }
public Type[] RemoveFilters { get; set; } public Type[] RemoveFilters { get; set; }

View File

@ -145,7 +145,13 @@ namespace SqlSugar
int i = 0; int i = 0;
foreach (var item in expression.Arguments) foreach (var item in expression.Arguments)
{ {
string memberName = expression.Members[i].Name;
string memberName = expression.Members?[i]?.Name;
if (memberName == null&& expression.Members ==null && item is MemberExpression member)
{
memberName = member.Member.Name;
this.Context.SugarContext.QueryBuilder.IsParameterizedConstructor = true;
}
if (this.Context?.SugarContext?.QueryBuilder?.AppendNavInfo?.MappingNavProperties?.ContainsKey(memberName) == true) if (this.Context?.SugarContext?.QueryBuilder?.AppendNavInfo?.MappingNavProperties?.ContainsKey(memberName) == true)
{ {
++i; ++i;