如何防止将重复项从一个CheckBoxList复制到Button_Click上的另一个CheckBoxList?

时间:2012-09-26 11:35:11

标签: c# asp.net .net

我有两个复选框列表。第一个已经有很少的项目,第二个是未绑定的。我想在按钮点击时将第一个复选框列表的选中项添加到第二个复选框列表。我正在使用for循环。但问题是当再次点击按钮时。它复制重复的值。如何防止复制重复值? button_click事件的代码如下:

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
        {
            if (CheckBoxList1.Items[i].Selected)
                CheckBoxList2.Items.Add(CheckBoxList1.Items[i]);
        }

3 个答案:

答案 0 :(得分:2)

您可以使用ListItemCollection.Contains方法:

var toAdd = CheckBoxList1.Items.Cast<ListItem>()
                         .Where(li => li.Selected 
                                   && !CheckBoxList2.Items.Contains(li));
foreach(ListItem li in toAdd)
{
    CheckBoxList2.Items.Add(li);
}

请注意,您需要为上面的这个小查询添加using System.Linq,或者使用循环代替。

答案 1 :(得分:0)

查看Collection.Contains()方法。我认为这将解决您的问题。在将其添加到第二个列表之前执行此操作。

这里有一些伪代码

if(!List.Contains(selectedItem)
{
    Add(selectedItem);
}

答案 2 :(得分:0)

您可以使用Except(System.Linq)

        double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
        double[] numbers2 = { 2.2 };

        IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

        foreach (double number in onlyInFirstSet)
            Console.WriteLine(number);