-1

私は2つのチェックボックスリストを持っています。最初のものはすでにアイテムがほとんどなく、2番目のものはバインドされていません。ボタンをクリックすると、最初のチェックボックスリストのチェックされたアイテムを2番目のチェックボックスリストに追加したいと思います。そのために 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()メソッドで略奪します。これで問題が解決すると思います。これは、2 番目のリストに追加する前に行ってください。

ここにいくつかの擬似コード

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 に答える