public IHttpActionResult AngularDTQuery(SearchObject searchObject) { UsersEntities db = new UsersEntities(); if (searchObject.girdId == 1) //Warannty { IQueryable <Warranty> a = db.Warranties.AsQueryable(); var xx = new DbQueryReturn <Warranty>().XXXXXXXXXXXXXX(a, searchObject); return(Ok(xx.Content)); } else if (searchObject.girdId == 2) //User list { IQueryable <Test> a = db.Tests.AsQueryable(); var xx = new DbQueryReturn <Test>().XXXXXXXXXXXXXX(a, searchObject); return(Ok(xx.Content)); } else { return(new DbQueryReturn <Test>().XXXXXXXXXXXXXX(null, searchObject)); } }
public dynamic XXXXXXXXXXXXXX(IQueryable <T> query, SearchObject searchObject) { decimal pageSize = 10.0M; int totalPages; if (searchObject.searchColName == null) { searchObject.searchColName = ""; } if (searchObject.searchText == null) { searchObject.searchText = ""; searchObject.searchColName = ""; } if (searchObject.searchColName.Length > 0) { var lam = GetExpression <T>(searchObject.searchColName, searchObject.searchText); totalPages = (int)Math.Ceiling((double)(query.AsQueryable().Where(lam).Count() / pageSize)); } else { totalPages = (int)Math.Ceiling((double)(query.Count() / pageSize)); } if (searchObject.pageNo < 1) { searchObject.pageNo = 1; } else if (searchObject.pageNo > totalPages) { searchObject.pageNo = totalPages; } int startPage, endPage; if (totalPages <= 10) { startPage = 1; endPage = totalPages; } else { if (searchObject.pageNo <= 6) { startPage = 1; endPage = 10; } else if (searchObject.pageNo + 4 >= totalPages) { startPage = totalPages - 9; endPage = totalPages; } else { startPage = searchObject.pageNo - 5; endPage = searchObject.pageNo + 4; } } int totalItems = query.Count(); int startIndex = (searchObject.pageNo - 1) * (int)pageSize; int endIndex = Math.Min(startIndex + (int)pageSize - 1, totalItems - 1); var pages = query.Take((endPage + 1) - startPage); int c = (endPage + 1) - startPage; List <int> a = new List <int>(); for (int i = 0; i < c; i++) { a.Add(startPage + i); } if (searchObject.searchColName.Length > 0) { var lam = GetExpression <T>(searchObject.searchColName, searchObject.searchText); var param = searchObject.searchColName; var propertyInfo = typeof(T).GetProperty(searchObject.defaultSortColumnName); var queryResultPage = query.AsQueryable().Where(lam).ToList().OrderBy(x => propertyInfo.GetValue(x, null)).Skip((int)pageSize * (searchObject.pageNo - 1)) .Take((int)pageSize).ToList(); return(Ok(new { totalItems = totalItems, currentPage = searchObject.pageNo, pageSize = pageSize, totalPages = totalPages, startPage = startPage, endPage = endPage, startIndex = startIndex, endIndex = endIndex, pagedItems = queryResultPage.ToList(), pages = a })); } else { var param = searchObject.searchColName; var propertyInfo = typeof(T).GetProperty(searchObject.defaultSortColumnName); var queryResultPage = query.ToList().OrderBy(x => propertyInfo.GetValue(x, null)).Skip((int)pageSize * (searchObject.pageNo - 1)) .Take((int)pageSize).ToList(); //var queryResultPage = query.OrderBy("") // .Skip((int)pageSize * (searchObject.pageNo - 1)) // .Take((int)pageSize); return(Ok(new { totalItems = totalItems, currentPage = searchObject.pageNo, pageSize = pageSize, totalPages = totalPages, startPage = startPage, endPage = endPage, startIndex = startIndex, endIndex = endIndex, pagedItems = queryResultPage.ToList(), pages = a })); } }