从.net的下拉列表中删除重复的项目
本文关键字:删除 项目 net 下拉列表 | 更新日期: 2023-09-27 18:05:03
如何从asp.net下拉列表中删除重复的项目,确保下拉列表中只列出唯一的值
对不起,如果这是重复的问题。搜索SO,但没有找到。
更新代码:
private void BindDropdown(DropDownList ddlColumn)
{
DataTable dtBinddropDown = new DataTable();
DataSet dsBinddrodown = new DataSet("dsSample");
dtBinddropDown = (DataTable)Session[GlobalConstants.SESSION_MYSESSION];
dsBinddrodown.Tables.Add(dtBinddropDown.Copy());
System.Collections.ArrayList arItems = new System.Collections.ArrayList();
if (ddlColumn.ID == "ddlEntryDate")
{
for (int i = 1; i < dsBinddrodown.Tables[0].Rows.Count; i++)
{
arItems.Add(dsBinddrodown.Tables[0].Rows[i]["Column 1"].ToString());
}
ddlColumn.DataSource = arItems;
ddlColumn.DataBind();
}
}
谢谢
如果你的数据源使用一个通用列表,你可以使用LINQ清除任何重复,然后再绑定到你的下拉控件-我假设你使用webforms ?
// ******
// Remove Any Duplicate Vehicles
// ********************
List<Vehicle> NoDuplicatesVehicleList = ListVehicle.AllVehicles;
NoDuplicatesVehicleList = NoDuplicatesVehicleList.GroupBy(x => x.VehicleID).Select(x => x.First()).ToList();
这是我用来删除重复的车辆对象在我的网站使用车辆id,但同样适用于你的下拉菜单。
希望对你有帮助
Truegilly
我同意w/Pranay的回答,但在一些罕见的情况下,你不能访问db/sproc的查询,这里是一个基于c#的方法:
foreach (DataRow row in dt.Rows)
{
string itemName = Convert.ToString(row["colname"]);
if (dt.Select(String.Format("Colname='{0}'", itemName)).Count() > 1)
row.Delete();
}
dt.AcceptChanges();
尝试DataView.ToTable Method (Boolean, String[])
DataTable newTable = oldTable.DefaultView.ToTable(true,"{your column name}");
使用linq。下面是一个例子
using System.Collections;
using System.Linq;
ArrayList inputList = new ArrayList();
ArrayList outputList = new ArrayList();
inputList.Add(1);
inputList.Add(2);
inputList.Add(3);
inputList.Add(1);
inputList.ToArray().Distinct().ToList()
.ForEach(a => outputList.Add(a));