无法访问任何Linq方法

时间:2015-06-23 11:53:52

标签: linq asp.net-web-api

我正在编写一个简单的ApiController来获取产品库存,但我遇到了一个奇怪的问题。我从返回System.Linq.IQueryable(在库中)的方法中获取数据,但我无法应用任何Linq方法,例如CountToList()。 import指令存在且不报告任何问题。 intellisense还将Data显示为System.Linq.IQueryable

代码:

Imports System.Web.Http
Imports System.Linq

Public Class ProductSearchController
    Inherits ApiController

    Public Function Get(...) As IQueryable

        Dim nvc As NameValueCollection = HttpUtility.ParseQueryString(Request.RequestUri.Query)
        Dim sEcho As String = nvc("sEcho").ToString()
        Dim iDisplayStart As Integer = CType(nvc("iDisplayStart"), Integer)

        'Signature of Stock:  public IQueryable Stock(...)
        Dim Data = New GenericSearches().Stock(...)
        Dim Count As Integer = Data.Count() 'Error Here!

        Dim result = New DataTableResult With {
            .sEcho = sEcho,
            .iTotalRecords = Count,
            .iTotalDisplayRecords = Count,
            .aaData = Data.ToList() 'Error Here!
            }
        Return result
    End Function
End Class

另外,我注意到错误纠正和intellisense要求我从一个奇怪的Devexpress库中选择那些方法,比如DevXpress.Data.Helpers.Linq。

1 个答案:

答案 0 :(得分:3)

非通用IQueryable界面具有CountToList()的扩展方法。只有通用IQueryable<T>可以。

如果您可以修改库以返回合适的IQueryable<T>,我建议您这样做。如果您不能,则可能需要致电Cast<T>()OfType<T>()以使用正确的扩展方法创建合适的IQueryable<T>