【问题标题】:Paging Extension Method for IQueryable(Of T)IQueryable(Of T) 的分页扩展方法
【发布时间】:2014-02-18 01:25:36
【问题描述】:

我编写了以下方法,试图扩展IQueryable<T> 以提供与我的自定义寻呼机控件集成的通用寻呼。但是,当我尝试在 IQueryable<Account> 上调用该方法时,我收到以下编译器错误:

BC30456: 'Page' 不是 'System.Linq.IQueryable(Of OrgName.ProjName.Account)'。

来源:

Imports System.Runtime.CompilerServices

Module Paging
    <Extension()>
    Public Function Page(Of T)(source As IQueryable(Of T), pageIndex As Integer, pageSize As Integer, ByRef recordCount As Integer) As IQueryable(Of T)
        recordCount = source.Count()
        Return source.Skip(pageIndex * pageSize).Take(pageSize)
    End Function
End Module

模块文件与Account 业务对象(OrgName.ProjName) 位于相同的程序集和命名空间中。 (名称已更改以保护无辜者。)

我不确定以上内容与该问题中接受的答案有何不同(显然,语言除外): Transform LINQ IQueryable into a paged IQueryable using LINQ to NHibernate

知道我做错了什么吗?

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 可能是个愚蠢的问题,但您是否在使用它的类中引用了 Paging?
  • @DanDrews 据我所知,是的。它位于 ASP.NET 页面上。我可以在同一行代码中使用Account,正如我所提到的,该模块与Account 在同一个程序集中。我有一个对该程序集(一个类库项目)的项目引用,并将其命名空间导入到该 ASP.NET 网站项目的根 web.config 中。

标签: vb.net linq entity-framework extension-methods iqueryable


【解决方案1】:

确保您的模块是公共的,并确保在您要使用扩展方法的文件中使用适当的“导入”语句。

干杯

【讨论】:

  • 哇,我添加了Public,一切都很好。谢谢你的修复,男孩我现在有点傻。这篇 MSDN 文章用一个有缺陷的例子让我误入歧途:msdn.microsoft.com/en-us/library/bb384936.aspx
  • @thepirat000,这究竟有什么帮助?
  • @thepirat000 这与原始问题有什么关系?
  • 请不要再把问题弄得更乱了。如果您发现评论不具建设性,只需将其标记为此类。
  • 要添加更多细节,Module 声明的默认访问级别是Friend。由于我的模块与使用它的位置不同,因此Friend 没有提供足够的访问权限,因此必须使用Public
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多