diff --git a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs index f1f3212fc..54e512375 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs @@ -476,6 +476,7 @@ namespace OrmTest.Demo var s2 = db.Queryable().Select(it => new { id = it.Id, w = new { x = it } }).ToList(); var s3 = db.Queryable().Select(it => new { newid = it.Id }).ToList(); var s4 = db.Queryable().Select(it => new { newid = it.Id, obj = it }).ToList(); + var s41 = db.Queryable().Select("*").ToList(); var s5 = db.Queryable().Select(it => new ViewModelStudent2 { Student = it, Name = it.Name }).ToList(); var s6 = db.Queryable((st, sc) => new object[] { JoinType.Left,st.SchoolId==sc.Id diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index d046f05e6..d49663ab4 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -460,7 +460,7 @@ namespace SqlSugar } else { - result= GetCount(); + result = GetCount(); } RestoreMapping(); QueryBuilder.IsCount = false; @@ -1071,10 +1071,14 @@ namespace SqlSugar var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key); var entityType = typeof(TResult); var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray()); - if (typeof(TResult) == typeof(ExpandoObject)) + if (entityType == UtilConstants.DynamicType) { result = this.Context.Utilities.DataReaderToExpandoObjectList(dataReader) as List; } + else if (entityType == UtilConstants.ObjType) + { + result = this.Context.Utilities.DataReaderToExpandoObjectList(dataReader).Select(it => ((TResult)(object)it)).ToList(); + } else if (entityType.IsAnonymousType() || isComplexModel) { result = this.Context.Utilities.DataReaderToDynamicList(dataReader); @@ -1440,7 +1444,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) + public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); @@ -1458,7 +1462,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); @@ -1496,7 +1500,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -1678,7 +1682,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -1786,7 +1790,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); @@ -1963,7 +1967,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -2063,7 +2067,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) + public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); @@ -2093,7 +2097,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); @@ -2280,7 +2284,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -2587,7 +2591,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -2921,7 +2925,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -3287,7 +3291,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -3665,7 +3669,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -4079,7 +4083,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; @@ -4505,7 +4509,7 @@ namespace SqlSugar _Where(expression); return this; } - public new ISugarQueryable Where(List conditionalModels) + public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs index 224e05f84..ebfe0199b 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Dynamic; using System.Linq; using System.Text; namespace SqlSugar @@ -27,6 +28,7 @@ namespace SqlSugar internal static Type DateType = typeof(DateTime); internal static Type ByteArrayType = typeof(byte[]); internal static Type ModelType= typeof(ModelContext); + internal static Type DynamicType = typeof(ExpandoObject); internal static Type Dicii = typeof(KeyValuePair); internal static Type DicIS = typeof(KeyValuePair); internal static Type DicSi = typeof(KeyValuePair);