防止将重复的项目添加到列表框中
我有这段代码,用于将选定的项目从一个 ListBox
添加到另一个。如何防止用户重复添加某个项目?我希望他们添加到 lstBoxToUserProjects
的 ListBox
仅包含不同的项目,没有重复的条目。
protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
List<ListItem> itemsToAdd= new List<ListItem>();
foreach (ListItem listItem in lstbxFromUserProjects.Items)
{
if (listItem.Selected)
itemsToAdd.Add(listItem);
}
foreach (ListItem listItem in itemsToAdd)
{
lstBoxToUserProjects.Items.Add(listItem);
}
}
编辑: 这是我最终使用的
protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
List<ListItem> itemsToAdd= new List<ListItem>();
foreach (ListItem listItem in lstbxFromUserProjects.Items)
{
if (listItem.Selected)
itemsToAdd.Add(listItem);
}
foreach (ListItem listItem in itemsToAdd)
{
if (!lstBoxToUserProjects.Items.Contains(listItem))
{
lstBoxToUserProjects.Items.Add(listItem);
}
}
}
I have this code for adding selected items from one ListBox
to another. How can I prevent the user from adding an item twice? I want the ListBox
they are adding to lstBoxToUserProjects
to only contain distinct items with no duplicate entries.
protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
List<ListItem> itemsToAdd= new List<ListItem>();
foreach (ListItem listItem in lstbxFromUserProjects.Items)
{
if (listItem.Selected)
itemsToAdd.Add(listItem);
}
foreach (ListItem listItem in itemsToAdd)
{
lstBoxToUserProjects.Items.Add(listItem);
}
}
EDIT:
Here's what I ended up using
protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
List<ListItem> itemsToAdd= new List<ListItem>();
foreach (ListItem listItem in lstbxFromUserProjects.Items)
{
if (listItem.Selected)
itemsToAdd.Add(listItem);
}
foreach (ListItem listItem in itemsToAdd)
{
if (!lstBoxToUserProjects.Items.Contains(listItem))
{
lstBoxToUserProjects.Items.Add(listItem);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果将
lstBoxToUserProjects
列表框绑定到数据源 (HashSet),那么您可以执行一个简单的检查来查看建议选择的项目是否已在目标中:注意,我建议使用 HashSet,因为那时您可以对集合进行高性能检查,而必须枚举列表才能检查匹配项。
If you bind the
lstBoxToUserProjects
list box to a datasource (HashSet) then you could do a simple check to see if the item proposed for selection was already in the destination:Note I'm proposing a HashSet because then you can do a performant check on the set whereas a List would have to be enumerated to check for a match.
您应该在 if 语句中调用 ListBox.Items.Contains() 来检查它是否已被添加。
You should just call ListBox.Items.Contains() in an if statement to check if it has already been added.
试试这个:
这至少假设 C# 3.5。
Try this:
This assumes C# 3.5, at least.
将
itemsToAdd
从List
更改为HashSet
:添加 MSDN:
Change
itemsToAdd
fromList
toHashSet
:Add MSDN:
使用
方法比较快
其中 _items_Unique 和 _items 是两个列表
Use
method it's fast then comparing
where _items_Unique and _items are two list