有没有一种从DropDownList获取唯一项目的简单方法?

时间:2009-06-12 21:23:01

标签: asp.net vb.net

我正在尝试从DropDownList中获取所有唯一项。有一种简单的方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:4)

如果您允许在此代码中使用LINQ(从.net 3.5和Visual Studio 2008开始),请查看Distinct扩展方法。

dropdown.Items.Cast(Of ListItem)().Distinct()

它将完成确定某个项目是否在幕后独一无二的所有艰苦工作

答案 1 :(得分:2)

尝试这样的事情:

Dim uniqueSet As New HashSet(Of ListItem)(dropdown.Items.Cast(Of ListItem)())

这当然假设您拥有.NET 3.5。 HashSet(Of T)类型是一种强类型的唯一项集合。

答案 2 :(得分:1)

总是迭代:

Dim uniqueItems As New ListItemCollection()
For Each myItem As ListItem In listitems
    If Not unique.Contains(myItem) Then
        unique.Add(myItem)
    End If
Next

这可能不是运行时或代码方面最简单的答案,但它是最简单的概念(对我来说,至少)。

编辑:mat1t解决方案的代码

Dim uniqueValues As IEnumerable(Of ListItem) = DropDownList1.Items.Cast(Of ListItem)().Distinct() 
DropDownList1.DataSource = uniqueValues
DropDownList1.DataBind()

答案 3 :(得分:1)

嘿伙计们我已经尝试了上面描述的所有三种方法,但我一直得到一个空列表或一个完整的重复列表,我正在使用LINQ数据源,所以我不能改变select语句,试过'DISTINCT'但是没有运气......

设置下拉菜单的初始值,工作并显示大量值

Dim context As WeldsDataContext = New WeldsDataContext()
Dim query = From BIDNumber In context.Fab_Missing_NDTs Select BIDNumber

DropDownList1.DataSource = query.ToList()
DropDownList1.DataBind()

'应该删除所有非明确的值吗?

Dim uniqueSet As New HashSet(Of ListItem)(DropDownList1.Items.Cast(Of ListItem)())
DropDownList1.DataSource = uniqueSet
DropDownList1.DataBind()

答案 4 :(得分:0)

我会将它们全部添加到哈希表中以构建唯一的项目。