如何将IQueryable转换为类型List(Of Orders)

时间:2015-05-18 20:42:43

标签: asp.net vb.net linq

几天前我问了一个关于如何使用基于索引的解决方案将记录添加到网页的问题。

我需要能够使用两个参数更改订单列表的排序:strSortBy和strSortDirection。

我正在尝试使用IQueryable查询:

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.Items而不是tempOrders

orderList.Items.AsQueryable.OrderBy(strSortBy + " " + strSortDirection)

更新

我能够以这种方式工作:

orderList.Items = orderList.Items.AsQueryable.OrderBy(strSortBy + " " + strSortDirection).ToList

1 个答案:

答案 0 :(得分:2)

调用ToList将查询具体化为列表:

orderList.Items = query.ToList()

但是当你不清楚为什么时,你似乎在施法,打电话,AsQueryable等。

如果orderList.ItemsList (Of Order),那你为什么要施展它?如果不是那么你可能根本不需要做任何演员。