Calling code:
string sql = @"SELECT a.Id ,c.Title,a.Content,a.Status,b.ReportSum FROM dbo.Comment AS a INNER JOIN(SELECT CommentId, COUNT(Id) AS ReportSum FROM dbo.Reported WHERE Type= 0 AND Status = 1 GROUP BY CommentId) AS b ON a.Id = b.CommentId LEFT JOIN dbo.Consultation AS c ON a.OutsideId = c.Id WHERE a.Type = 0 "; List<SqlParameter> parms = new List<SqlParameter>(); if (!string.IsNullOrEmpty(search)) { sql = sql + " AND c.Title LIKE @Serch "; parms.Add(new SqlParameter() { ParameterName = "Serch", Value = "%"+search+ "%" }); } if (isStatus!=3) { sql = sql + " AND a.Status=@Status "; parms.Add(new SqlParameter() { ParameterName = "Status", Value = isStatus }); } result.Total = ServiceSqlHelper.GetPageCount(db, sql, parms); var list = ServiceSqlHelper.PagerResult<CommentReported>(db, sql, "Id", parms);
Paging Code Package:
public static class ServiceSqlHelper { /// </ Summary> /// <typeParam name = "T"> </ typeParam> /// <param name = "DbContext"> context object </ param> /// <param name = "sql"> executing statements </ param> /// <param name = "Sort"> sort noted wording </ param> /// <param name = "parms"> parameters </ param> /// < param name = "pageSize"> page size </ param> /// <param name = "the pageIndex"> page </ param> /// <returns></returns> public static List<T> PagerResult<T>(DbContext dbContext, string sql, string sort,List<SqlParameter> parms=null , int pageSize=10, int pageIndex=1) { int pageStart = pageSize * (pageIndex - 1); int pageEnd = pageSize * pageIndex; string sqlPage = string.Format(@"SELECT * FROM ( SELECT ROW_NUMBER() OVER( ORDER BY {0} DESC) AS RowId, * FROM ({1}) a ) AS t WHERE t.RowId BETWEEN {2} AND {3}", sort,sql,pageStart,pageEnd) ; List<The SqlParameter> parms1 parms = == null ? New new List <the SqlParameter> (): CloneParms (parms); var Query dbContext.Database.SqlQuery = <T> . (SqlPage, parms1.ToArray ()) ToList (); return Query ; } /// <Summary> /// Get the total number of pieces of data /// </ Summary> /// <param name = "DbContext"> context object </ param> /// <param name = "SQL" > SQL statement </ param> /// <param name = "parms"> parameters </ param> /// <Returns> </ Returns> public static int GetPageCount(DbContext dbContext, string sql, List<SqlParameter> parms=null) { List<SqlParameter> parms1= parms == null?new List<SqlParameter>(): CloneParms(parms); return dbContext.Database.SqlQuery<int>(string.Format("select count(*) from ({0}) a", sql), parms1.ToArray()).FirstOrDefault(); } public static List<SqlParameter> CloneParms(List<SqlParameter> sources) { List<SqlParameter> list = new List<SqlParameter>(); foreach (SqlParameter p in sources) { SqlParameter pp = new SqlParameter() { ParameterName = p.ParameterName, Value = p.Value }; list.Add(pp); } return list; } }