我正在尝试从DropDownList中获取所有唯一项。有一种简单的方法可以做到这一点吗?
答案 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)
我会将它们全部添加到哈希表中以构建唯一的项目。