我正在使用linq to sql来获取我的数据,当我在数据网格上设置页面大小并且用户选择第2页时,我得到回发并且我重新读取所有数据以显示第二页。我怀疑应该有更好的方法来做到这一点,这种方式最终只能读取我需要显示的数据。我想知道是否有任何代码示例...
答案 0 :(得分:3)
请参阅ScottGu在LINQ to SQL (Part 3)上的帖子,并在页面中搜索“分页我们的查询结果” - 这有一些很好的例子。
或者,如果您使用LinqDataSource control,并且您正在与SQL 2005或2008数据库通信,则应自动获得此行为。 LINQ to SQL (Part 5)涵盖了这一点。
答案 1 :(得分:2)
如果您希望真的减轻数据库负载,请查看client-side paging ...
答案 2 :(得分:0)
public static IEnumerable<new_log> Search(dbDataContext db, int _user,int _pageNumber, int _rowCountPerPage)
{
var query = (
from p in db.new_log
where p.created_by == (_user < 0 ? p.created_by : _user) orderby p.id descending
select p
)
.Skip(_pageNumber * _rowCountPerPage).Take(_rowCountPerPage);
return query;
}
要点:
1.我们必须在页面或控制级别禁用视图状态以提高性能。
<%@ Page Language="C#" EnableViewState="false" %> OR <asp:GridView
EnableViewState="false" runat="server" />
2.尝试编写单个查询以获得结果。
http://forums.asp.net/p/1779601/5120205.aspx/1?p=True&t=634814907594742030