如何检查列表框中是否已存在该值,以便我可以避免重复?
我已经在服务器端列表框中添加了一些值,当我添加到列表时,我得到了更多的重复项。
如何避免重复?
lst_Viewers.Items.Add(reader["Name"].ToString());
答案 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 - 更优雅(在我看来)并且效率更高。