code optimization and demo

This commit is contained in:
sunkaixuna 2021-07-04 13:51:19 +08:00
parent b17ed51b60
commit e92a4be798
8 changed files with 33 additions and 35 deletions

View File

@ -38,7 +38,7 @@ namespace OrmTest
{ {
var list = new List<int>() { 1, 2, 3 }; var list = new List<int>() { 1, 2, 3 };
var query1 = db.Queryable<Order>(); var query1 = db.Queryable<Order>();
var queryable2 = db.Reportable(list).ToSingleColumnQueryable(); var queryable2 = db.Reportable(list).ToQueryable<int>();
var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName)) var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName))
.Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList(); .Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList();
} }
@ -86,16 +86,16 @@ namespace OrmTest
}).ExecuteCommand(); }).ExecuteCommand();
var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToSingleColumnQueryable(); var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToQueryable<DateTime>();
var queryableRight = db.Queryable<operateinfo>(); var queryableRight = db.Queryable<operateinfo>();
var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left, var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left,
(x1, x2) => x2.operate_time.ToString("yyyy-MM")==SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM")) (x1, x2) => x2.operate_time.ToString("yyyy-MM")==x1.ColumnName.ToString("yyyy-MM"))
.GroupBy((x1,x2)=>x1.ColumnName) .GroupBy((x1,x2)=>x1.ColumnName)
.Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now)) .Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now))
.Select((x1, x2) => new .Select((x1, x2) => new
{ {
count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) , count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) ,
date=SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM") date=x1.ColumnName.ToString("yyyy-MM")
}).ToList(); }).ToList();
} }

View File

@ -38,7 +38,7 @@ namespace OrmTest
{ {
var list = new List<int>() { 1, 2, 3 }; var list = new List<int>() { 1, 2, 3 };
var query1 = db.Queryable<Order>(); var query1 = db.Queryable<Order>();
var queryable2 = db.Reportable(list).ToSingleColumnQueryable(); var queryable2 = db.Reportable(list).ToQueryable<int>();
var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName)) var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName))
.Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList(); .Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList();
} }
@ -86,16 +86,16 @@ namespace OrmTest
}).ExecuteCommand(); }).ExecuteCommand();
var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToSingleColumnQueryable(); var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToQueryable<DateTime>();
var queryableRight = db.Queryable<operateinfo>(); var queryableRight = db.Queryable<operateinfo>();
var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left, var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left,
(x1, x2) => x2.operate_time.ToString("yyyy-MM")==SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM")) (x1, x2) => x2.operate_time.ToString("yyyy-MM")== x1.ColumnName .ToString("yyyy-MM"))
.GroupBy((x1,x2)=>x1.ColumnName) .GroupBy((x1,x2)=>x1.ColumnName)
.Where(x1=>SqlFunc.Between(SqlFunc.ToDate(x1.ColumnName),DateTime.Now.AddYears(-1),DateTime.Now)) .Where(x1=>SqlFunc.Between(x1.ColumnName,DateTime.Now.AddYears(-1),DateTime.Now))
.Select((x1, x2) => new .Select((x1, x2) => new
{ {
count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) , count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) ,
date=SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM") date= x1.ColumnName.ToString("yyyy-MM")
}).ToList(); }).ToList();
} }

View File

@ -38,7 +38,7 @@ namespace OrmTest
{ {
var list = new List<int>() { 1, 2, 3 }; var list = new List<int>() { 1, 2, 3 };
var query1 = db.Queryable<Order>(); var query1 = db.Queryable<Order>();
var queryable2 = db.Reportable(list).ToSingleColumnQueryable(); var queryable2 = db.Reportable(list).ToQueryable<int>();
var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName)) var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName))
.Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList(); .Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList();
} }
@ -86,17 +86,16 @@ namespace OrmTest
}).ExecuteCommand(); }).ExecuteCommand();
var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToSingleColumnQueryable(); var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToQueryable<DateTime>();
var queryableRight = db.Queryable<operateinfo>(); var queryableRight = db.Queryable<operateinfo>();
var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left, var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left,
(x1, x2) => x2.operate_time.ToString("yyyy-MM")==SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM")) (x1, x2) => x2.operate_time.ToString("yyyy-MM")==x1.ColumnName.ToString("yyyy-MM"))
.GroupBy((x1,x2)=>x1.ColumnName) .GroupBy((x1,x2)=>x1.ColumnName)
.Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now)) .Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now))
.Select((x1, x2) => new .Select((x1, x2) => new
{ {
count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) , count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) ,
date=SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM") date=x1.ColumnName.ToString("yyyy-MM")
}).ToList(); }).ToList();
} }

View File

@ -38,7 +38,7 @@ namespace OrmTest
{ {
var list = new List<int>() { 1, 2, 3 }; var list = new List<int>() { 1, 2, 3 };
var query1 = db.Queryable<Order>(); var query1 = db.Queryable<Order>();
var queryable2 = db.Reportable(list).ToSingleColumnQueryable(); var queryable2 = db.Reportable(list).ToQueryable<int>();
var x = db.Queryable(query1, queryable2, (x1, x2) => x1.Id.Equals(x2.ColumnName)) var x = db.Queryable(query1, queryable2, (x1, x2) => x1.Id.Equals(x2.ColumnName))
.Select((x1, x2) => new { x = x1.Id, x2 = x2.ColumnName }).ToList(); .Select((x1, x2) => new { x = x1.Id, x2 = x2.ColumnName }).ToList();
} }
@ -86,16 +86,16 @@ namespace OrmTest
}).ExecuteCommand(); }).ExecuteCommand();
var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToSingleColumnQueryable(); var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToQueryable<DateTime>();
var queryableRight = db.Queryable<operateinfo>(); var queryableRight = db.Queryable<operateinfo>();
var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left, var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left,
(x1, x2) => x2.operate_time.ToString("yyyy-MM")==SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM")) (x1, x2) => x2.operate_time.ToString("yyyy-MM")== x1.ColumnName .ToString("yyyy-MM"))
.GroupBy((x1,x2)=>x1.ColumnName) .GroupBy((x1,x2)=>x1.ColumnName)
.Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now)) .Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now))
.Select((x1, x2) => new .Select((x1, x2) => new
{ {
count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) , count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) ,
date=SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM") date=x1.ColumnName.ToString("yyyy-MM")
}).ToList(); }).ToList();
} }

View File

@ -29,10 +29,10 @@ namespace SqlSugar
Init(); Init();
} }
public IReportable<T> MakeUp(Func<T, object> auto) //public IReportable<T> MakeUp(Func<T, object> auto)
{ //{
throw new NotImplementedException(); // throw new NotImplementedException();
} //}
public ISugarQueryable<T> ToQueryable() public ISugarQueryable<T> ToQueryable()
{ {
@ -67,6 +67,10 @@ namespace SqlSugar
} }
return this.Context.SqlQueryable<object>(sb.ToString()).Select<T>(); return this.Context.SqlQueryable<object>(sb.ToString()).Select<T>();
} }
public ISugarQueryable<SingleColumnEntity<Y>> ToQueryable<Y>()
{
return ToQueryable().Select<SingleColumnEntity<Y>>();
}
private void Each<Y>(StringBuilder sb, List<Y> list) private void Each<Y>(StringBuilder sb, List<Y> list)
{ {
@ -85,11 +89,6 @@ namespace SqlSugar
} }
} }
public ISugarQueryable<SingleColumnEntity> ToSingleColumnQueryable()
{
return ToQueryable().Select<SingleColumnEntity>();
}
private void ClassMethod<Y>(Y data, StringBuilder sb,bool isLast) private void ClassMethod<Y>(Y data, StringBuilder sb,bool isLast)
{ {
var columns = new StringBuilder(); var columns = new StringBuilder();

View File

@ -6,8 +6,8 @@ using System.Threading.Tasks;
namespace SqlSugar namespace SqlSugar
{ {
public class SingleColumnEntity public class SingleColumnEntity<T>
{ {
public object ColumnName { get; set; } public T ColumnName { get; set; }
} }
} }

View File

@ -8,8 +8,8 @@ namespace SqlSugar
{ {
public interface IReportable<T> public interface IReportable<T>
{ {
IReportable<T> MakeUp(Func<T,object> auto); //IReportable<T> MakeUp(Func<T,object> auto);
ISugarQueryable<T> ToQueryable(); ISugarQueryable<T> ToQueryable();
ISugarQueryable<SingleColumnEntity> ToSingleColumnQueryable(); ISugarQueryable<SingleColumnEntity<Y>> ToQueryable<Y>();
} }
} }

View File

@ -38,7 +38,7 @@ namespace OrmTest
{ {
var list = new List<int>() { 1, 2, 3 }; var list = new List<int>() { 1, 2, 3 };
var query1 = db.Queryable<Order>(); var query1 = db.Queryable<Order>();
var queryable2 = db.Reportable(list).ToSingleColumnQueryable(); var queryable2 = db.Reportable(list).ToQueryable<int>();
var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName)) var x = db.Queryable(queryable2, query1, (x2, x1) => x1.Id.Equals(x2.ColumnName))
.Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList(); .Select((x2, x1) => new { x = x1.Id, x2 = x2.ColumnName }).ToList();
} }
@ -86,16 +86,16 @@ namespace OrmTest
}).ExecuteCommand(); }).ExecuteCommand();
var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToSingleColumnQueryable(); var queryableLeft = db.Reportable(ReportableDateType.MonthsInLast1years).ToQueryable<DateTime>();
var queryableRight = db.Queryable<operateinfo>(); var queryableRight = db.Queryable<operateinfo>();
var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left, var list= db.Queryable(queryableLeft, queryableRight, JoinType.Left,
(x1, x2) => x2.operate_time.ToString("yyyy-MM")==SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM")) (x1, x2) => x2.operate_time.ToString("yyyy-MM")==x1.ColumnName.ToString("yyyy-MM"))
.GroupBy((x1,x2)=>x1.ColumnName) .GroupBy((x1,x2)=>x1.ColumnName)
.Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now)) .Where(x1=>SqlFunc.Between(x1.ColumnName,"2021-01-01",DateTime.Now))
.Select((x1, x2) => new .Select((x1, x2) => new
{ {
count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) , count=SqlFunc.AggregateSum(SqlFunc.IIF(x2.id>0,1,0)) ,
date=SqlFunc.ToDate(x1.ColumnName).ToString("yyyy-MM") date=x1.ColumnName.ToString("yyyy-MM")
}).ToList(); }).ToList();
} }