几天前我问了一个关于如何使用基于索引的解决方案通过记录向网页添加分页的问题。
我需要能够改变排序的顺序列表使用两个参数:strSortBy,和strSortDirection。
我正在尝试使用IQueryable query:
query = temporders.AsQueryable.OrderBy(strSortBy + " " + strSortDirection)
但是我得到一个错误:
Unable to cast object of type 'System.Linq.EnumerableQuery`1[Order]' to type 'System.Collections.Generic.List`1[Order]'.
:
orderList.Items = query
这是向上(下一步)按钮的代码:
Dim temporders As System.Collections.Generic.List(Of Order) = orderList.Items
If Not temporders Is Nothing And Not String.IsNullOrEmpty(strSortBy) Then
Dim query As IQueryable = Nothing
query = temporders.AsQueryable.OrderBy(strSortBy + " " + strSortDirection)
orderList.Items = query
End If
我在作业中做错了什么?任何指导都是感激的。
谢谢。
我修改了代码,将OrderBy应用于oderList。项,而不是到tempOrders
orderList.Items.AsQueryable.OrderBy(strSortBy + " " + strSortDirection)
我可以让它这样工作:
orderList.Items = orderList.Items.AsQueryable.OrderBy(strSortBy + " " + strSortDirection).ToList
调用ToList
将查询具体化为列表:
orderList.Items = query.ToList()
但是当不清楚为什么时,您似乎在使用cast, calling, AsQueryable
等。
如果orderList.Items
是List (Of Order)
,那么你为什么要施放它?如果不是,那么你可能根本不需要做任何强制类型转换。