1、查询当前月和前一个月的数据
添加一个扩展方法AddMonth
public static ISugarQueryable<T> AddMonth<T>(this ISugarQueryable<T> queryable, int month = -1, DateTime? date = null) where T : class, new() { if (date == null) { date = DateTime.Today; } DateTime newDate = (DateTime)date; List<string> sqlList = new List<string>(); for (int i = month; i <= 0; i++) { var datestr = newDate.AddMonths(i).ToString("yyMM"); var newq = queryable.Clone().AS($"{queryable.SqlBuilder.GetNoTranslationColumnName(queryable.QueryBuilder.EntityName)}{datestr}"); var sql = newq.ToSqlString(); sqlList.Add(sql); } var sqlstr = string.Join("\r\nUnion All\r\n", sqlList); var queryabler = queryable.Context.SqlQueryable<T>(sqlstr); return queryabler; }
2、查询一段时间跨度的数据
添加一个扩展方法Between
public static ISugarQueryable<T> Between<T>(this ISugarQueryable<T> queryable, int start, int end, DateTime? date = null) where T : class, new() { if (date == null) { date = DateTime.Today; } DateTime newDate = (DateTime)date; List<string> sqlList = new List<string>(); for (int i = start; i <= end; i++) { var datestr = newDate.AddMonths(i).ToString("yyMM"); var newq = queryable.Clone().AS($"{queryable.SqlBuilder.GetNoTranslationColumnName(queryable.QueryBuilder.EntityName)}{datestr}"); var sql = newq.ToSqlString(); sqlList.Add(sql); } var sqlstr = string.Join("\r\nUnion All\r\n", sqlList); var queryabler = queryable.Context.SqlQueryable<T>(sqlstr); return queryabler; }
3、测试方法
var ssc = SqlFuncEx.GetDB("server=127.0.0.1;database=SQLSUGAR4XTEST;uid=sa;pwd=123456"); var sql = ssc.Queryable<Student>().AddMonth().ToSqlString(); var sql2 = ssc.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).AddMonth().ToSqlString(); var sql3 = ssc.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id) .Select((st, sc) =>new Student { Id = st.Id, Name = st.Name }) .AddMonth().ToSqlString();
Demo地址:https://gitee.com/xuanyun2018/sqlsugardemo.git