试图在vb.net中获取排序列表

时间:2016-11-18 19:29:27

标签: asp.net vb.net linq sorting enumerable

我有两个从数据库填充的列表框(可用项和选定项)。我可以在这些列表之间添加和删除via按钮,但是当我从Selected列表中删除时,该项目将转到Available列表的底部。它没有按字母顺序排列。所以我尝试了Linq选项。

这是我得到的错误:

hibernatespatial.org

代码:

Unable to cast object of type 'System.Linq.OrderedEnumerable2[System.Object,System.Object]' to type 'System.Collections.Generic.IEnumerable1[System.Web.UI.WebControls.ListItem]'.

1 个答案:

答案 0 :(得分:1)

由于ListItemCollection返回的Items仅实现IEnumerable而非IEnumerable(Of ListItem),因此您应该在查询中添加Cast。在清除LINQ查询之前,您还需要使用ToList()或强制查询评估的其他内容,因为LINQ查询会被延迟评估,否则列表将在您的查询被评估之前被清除!

myQuery = (
    From result In Available.Items.Cast(Of ListItem)() _
    Select result _
    Order By result.Text Ascending
).ToList()

您可能还想转Option Strict On以帮助查找其他内容 编译时的问题。