【问题标题】:Paging ListView With DataPager and skip, take [closed]使用 DataPager 分页 ListView 并跳过,采取 [关闭]
【发布时间】:2013-08-30 00:22:23
【问题描述】:

我使用此代码在 asp.net 中分页 Listview 控件。

Paging ListView With DataPager

但我想使用 skip 和 take 来分页 Listview。

我搜索了很多,但没有找到正确的答案

【问题讨论】:

  • 你想做什么?

标签: c# asp.net linq listview datapager


【解决方案1】:

要进行真正的自定义分页,您只能获取将在当前页面上显示的确切记录,那么您将需要使用某种形式的 LINQ 提供程序(LINQ to SQL、LINQ to Entities 等),因为.Skip().Take() 方法将无法提供自定义分页上下文,而无法影响从数据库中检索数据的查询。

也就是说,.Skip().Take() 对所有页面的总记录的整个列表的分页能力在作为 LINQ to Objects 应用时会显着减弱,因为它不能只提供一个单页数据。

简而言之,您需要决定要使用哪种 LINQ to XYZ 风格的数据库功能,以允许 .Skip().Take() 代表您真正执行高效的自定义分页。

如果您决定使用 LINQ to SQL,那么您应该查看 LinqDataSource class,特别是 AutoPage property,因为这是您正在寻找的 .Skip().Take() 功能的内置使用.

【讨论】:

  • 您能解释一下为什么使用 LINQ to Objects 时 Skip 和 Take 不能正常工作吗?例如如果您要编写 someObjects.Skip(20).Take(10),这会不会在 LINQ to Objects 和 LINQ to SQL 中给出相同的结果?
  • @RyanDansie - LINQ to Objects 适用于 IEnumerable 对象,而 LINQ to XYZ 风格适用于 IQueryable 对象。不同之处在于 IQueryable 是由 LINQ 提供程序解析的数据,例如 LINQ to SQL 采用 IQueryable 数据并将其解析为 T-SQL 语句。使用.Skip().Take() 的LINQ to Objects 可以提供类似分页的自定义体验,但前提是整个IEnumerable 集合都在内存中,这对于庞大的数据集(想想数据库表中的100,000 行)通常是情况并非如此,即使它是一个巨大的资源猪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多