我正在编写一个简单的ApiController来获取产品库存,但我遇到了一个奇怪的问题。我从返回System.Linq.IQueryable
(在库中)的方法中获取数据,但我无法应用任何Linq方法,例如Count
或ToList()
。 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。
答案 0 :(得分:3)
非通用IQueryable
界面不具有Count
和ToList()
的扩展方法。只有通用IQueryable<T>
可以。
如果您可以修改库以返回合适的IQueryable<T>
,我建议您这样做。如果您不能,则可能需要致电Cast<T>()
或OfType<T>()
以使用正确的扩展方法创建合适的IQueryable<T>
。