我正在使用 linq to sql 来获取我的数据,当我在我的数据网格上设置页面大小并且用户选择第 2 页时,我得到一个回发并重新读取所有数据以显示第二页。我怀疑应该有更好的方法来做到这一点,一种最终只读取我需要显示的数据的方法。我想知道是否有任何代码示例...
问问题
3784 次
3 回答
3
请参阅 ScottGu 在LINQ to SQL (Part 3)上的帖子,并在页面中搜索“Paging our Query Results”——这有一些很好的示例。
或者,如果您使用LinqDataSource 控件,并且您正在与 SQL 2005 或 2008 数据库通信,您应该会自动获得此行为。LINQ to SQL(第 5 部分)涵盖了这一点。
于 2009-05-21T00:22:34.767 回答
2
如果您想真正减轻数据库负载,请查看客户端分页...
于 2009-05-21T01:14:51.133 回答
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
于 2012-08-25T15:34:44.787 回答