c# – 基于asp.net mvc中的两个参数使用Linq-To-Sql进行分页
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 基于asp.net mvc中的两个参数使用Linq-To-Sql进行分页,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2522字,纯文字阅读大概需要4分钟。
内容图文
作为两个参数我说currentPage和pagesize …..我到目前为止使用sql server存储过程并实现这样的分页,
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;
}
现在我想返回记录,TotalCount,我使用总计数生成页面数…..这可能……任何建议……
编辑:
刚发现这个……
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);
解决方法:
你可以使用IQueryable.Skip(),. Take()和.Count()“手动”完成它,或者你可以使用这个方便的模式: –
public class PagedList<T> : List<T>
{
public PagedList(IEnumerable<T> source, int index, int pageSize)
{
this.TotalCount = source.Count();
this.PageSize = pageSize;
this.PageIndex = index;
this.AddRange(source.Skip(index * pageSize).Take(pageSize).ToList());
}
public int TotalCount { get; set; }
public int PageIndex { get; set; }
public int PageSize { get; set; }
public bool HasPreviousPage
{
get
{
return (PageIndex > 0);
}
}
public bool HasNextPage
{
get
{
return ((PageIndex + 1) * PageSize) < TotalCount;
}
}
}
像这样使用它: –
public ActionResult Materials(int page)
{
var materials = MaterialsRepository.FindAllMaterials();
var results = new PagedList<MaterialsObj>(materials, page - 1, 10);
return new View(results)
}
互联网上有很多实现,包括助手和测试以及所有爵士乐.我认为ScottGu提出了原始代码,但不要引用我的话.
> http://pagedlist.codeplex.com/
> http://www.squaredroot.com/2009/06/15/return-of-the-pagedlist/
> http://blog.wekeroad.com/blog/aspnet-mvc-pagedlistt/
> http://mha.dk/post/LINQ-and-PagedList.aspx
内容总结
以上是互联网集市为您收集整理的c# – 基于asp.net mvc中的两个参数使用Linq-To-Sql进行分页全部内容,希望文章能够帮你解决c# – 基于asp.net mvc中的两个参数使用Linq-To-Sql进行分页所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。