如何在asp.net中添加它之前检查列表框中是否已存在值

时间:2012-02-14 10:44:55

标签: c# asp.net .net listbox

如何检查列表框中是否已存在该值,以便我可以避免重复?

我已经在服务器端列表框中添加了一些值,当我添加到列表时,我得到了更多的重复项。

如何避免重复?

lst_Viewers.Items.Add(reader["Name"].ToString());

3 个答案:

答案 0 :(得分:7)

ListItem item = new ListItem(reader["Name"].ToString());
if ( ! lst_Viewers.Items.Contains(item) ){
    lst_Viewers.Items.Add(item);
}

var name = reader["Name"].ToString();
ListItem item = lst_Viewers.Items.FindByText(name);
if ( item  == null ){
    lst_Viewers.Items.Add(new ListItem(name));
}

答案 1 :(得分:1)

if(!lst_Viewers.Items.Any(item => item.Value.ToString().Equals(reader["Name"].ToString())
    lst_Viewers.Items.Add(reader["Name"].ToString());

答案 2 :(得分:1)

另一种方法是将所有值插入List<string>,然后仅在循环后添加项目,使用.Distinct()仅获取唯一值:

List<string> names = new List<string>();
while (reader.Read())
    names.Add(reader["Name"].ToString())
names.Distinct().ToList().ForEach(name => lst_Viewers.Items.Add(name));

这样您就不必在每次迭代中搜索整个DropDown - 更优雅(在我看来)并且效率更高。