3

我正在使用 linq to sql 来获取我的数据,当我在我的数据网格上设置页面大小并且用户选择第 2 页时,我得到一个回发并重新读取所有数据以显示第二页。我怀疑应该有更好的方法来做到这一点,一种最终只读取我需要显示的数据的方法。我想知道是否有任何代码示例...

4

3 回答 3

3

你真的应该看看SkipTake方法。

请参阅 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 回答