-1

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

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

3 回答 3

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上面的这个小查询添加或使用循环。

于 2012-09-26T11:42:27.337 回答
0

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

这里有一些伪代码

if(!List.Contains(selectedItem)
{
    Add(selectedItem);
}
于 2012-09-26T11:42:00.837 回答
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);
于 2012-09-26T11:42:57.647 回答