В качестве двух параметров я говорю currentPage
и pagesize
..... Я до сих пор использовал хранимые процедуры сервера sql и реализовал пейджинг, как это,
GO
ALTER PROCEDURE [dbo].[GetMaterialsInView]
-- Add the parameters for the stored procedure here
@CurrentPage INT,
@PageSize INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT *,ROW_NUMBER() OVER (ORDER BY Id) AS Row FROM
(
SELECT
*,ROW_NUMBER() OVER (ORDER BY Id) AS Row
FROM InTimePagingView
) AS InTimePages
WHERE Row >= (@CurrentPage - 1) * @PageSize + 1 AND Row <= @CurrentPage*@PageSize
SELECT COUNT(*) as TotalCount FROM InTimePagingView
SELECT CEILING(COUNT(*) / CAST(@PageSize AS FLOAT)) NumberOfPages
FROM InTimePagingView
END
Теперь я использую Linq-to-sql, и я использую это,
public IQueryable<MaterialsObj> FindAllMaterials()
{
var materials = from m in db.Materials
join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
where m.Is_Deleted == 0
select new MaterialsObj()
{
Id = Convert.ToInt64(m.Mat_id),
Mat_Name = m.Mat_Name,
Mes_Name = Mt.Name,
};
return materials;
}
Теперь я хочу вернуть records,TotalCount
, где я использую Total count для генерации номеров страниц ..... Возможно ли это ... Любое предложение ...
EDIT:
Только что нашел это ...
NorthWindDataContext db = new NorthWindDataContext();
var query = from c in db.Customers
select c.CompanyName;
//Assuming Page Number = 2, Page Size = 10
int iPageNum = 2;
int iPageSize = 10;
var PagedData = query.Skip((iPageNum - 1) * iPageSize).Take(iPageSize);
ObjectDumper.Write(PagedData);