2012-09-26 65 views
-1

我有兩個checkboxlists。第一個已經有幾個項目,第二個沒有結算。我想將第一個複選框列表的選中項添加到第二個複選框列表上。我正在使用for循環。但問題是,當再次點擊按鈕時。它複製重複值。我怎樣才能防止這個複製重複值? button_click事件中的代碼如下:如何防止將重複項目從一個CheckBoxList複製到Button_Click上的另一個CheckBoxList?

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

在這裏找到答案http://stackoverflow.com/q/12545718/122005 – chridam

回答

0

Collection.Contains()方法中獲得戰利品。我認爲這會解決你的問題。在將其添加到第二個列表之前執行此操作。

這裏的一些僞代碼

if(!List.Contains(selectedItem) 
{ 
    Add(selectedItem); 
} 
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這一點上面的查詢,或使用一個循環來代替。

+0

非常感謝蒂姆,我解決我的問題。由於我對C#和.net不太熟悉,我只是將Items.contains方法添加到我的代碼中。而不是詳細介紹你提到的。再次感謝。 – Don

+0

對不起,但我沒有足夠的投票聲望。有沒有其他方法可以在這裏接受答案? – Don

+0

@唐:除了答案之外,你可以通過檢查綠色的checkmrk來[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –

0

可以使用除(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); 
+0

這是題外話題。 –

相關問題