2011-04-08 53 views
0

我使用LINQ to SQL来搜索相当大的数据库,并使用listview和datapager进行分页。我知道Skip()和Take()方法,并让这些方法正常工作。但是,我无法使用数据填充器的结果数,因为它们将始终是Take()方法中确定的页面大小。使用Linq-to-sql,Listview和Datapager进行分页

例如:

var result = (from c in db.Customers 
       where c.FirstName == "JimBob" 
       select c).Skip(0).Take(10); 

这个查询将始终返回10分或更少的结果,即使有1000个JimBobs。因此,DataPager会一直认为只有一个页面,并且用户无法浏览整个结果集。

如何欺骗数据引擎显示1000的pagecount,但一次绑定10个项目?我不想使用objectdatasource。

谢谢。

回答

1

运行第二个查询:

var count = Customers.Where(c => c.FirstName == "JimBob").Count(); 
+0

我明白了。但我在哪里使用这个计数。我如何更新计数为1000而不是10的数据手册。 – guest 2011-04-08 14:10:03

+0

请帮助...自从我一直坚持这一点,已经过了2天。我错过了很简单的事情吗? – guest 2011-04-08 16:50:55

+0

我从来没有使用数据引擎...如果它应该为你做分页,你是否应该用skip&take限制查询?还是它处理这个问题呢? – taylonr 2011-04-08 18:11:46

0

尝试使用这个..

var result = (from c in db.Customers 
      where c.FirstName == "JimBob" 
      select c).Skip((PAGENUMBER-1 * 10)).Take(10); 

看看这里的博客帖子上简单LINQ Paging

希望它能帮助.. :)