从.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();
        }
}

谢谢

从.net的下拉列表中删除重复的项目

如果你的数据源使用一个通用列表,你可以使用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));