2011-10-27 18 views
0

アイテムをarraylistから削除しようとしていますが、アイテムが削除されていません。削除エラーが出ません。アイテムを削除できません。削除してください。

protected void ibtnMoveUp_Click(object sender, ImageClickEventArgs e) 
    { 
     ArrayList ImgArry = new ArrayList(); 
     ImgArry.Add(SelImgId); 
     ImgArry.Add(SelImgpath);//image name 
     ImgArry.Add(SelImgName);//image path 
     List<int> t1 = new List<int>(); 
     if (Imgarry1 != null) 
      t1 = Imgarry1;//Imaarry1 is the type List<int> 
     t1.Add(Convert.ToInt32(ImgArry[0])); 
     Imgarry1 = t1; 
     List<ArrayList> t = new List<ArrayList>(); 
     if (newpath.Count > 0)// newpath is the type List<ArrayList> nd creating the viewstate 
      t = newpath; 
     t.Remove(ImgArry);//Item is not getting remove 
     newpath = t; 
     for (int i = 0; i < newpath.Count; i++) 
     { 
      ArrayList alst = newpath[i]; 
      newtb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i); 

     } 
     dlstSelectedImages.DataSource = newtb; 
     DataBind(); 
} 
+0

を追加しましたが、昨日からの答えです:http://stackoverflow.com/questions/7907475/simplifying-locating-an-element-in-a-list-perhaps-using-linq/7907500 #7907500 –

答えて

0

アダムHouldsworthは書き込みを言っているが、私はいくつかの異なる方法で行われているND私のコードは怒鳴る

です。このラインとここ

   List<ArrayList> temp = new List<ArrayList>(t.Count); 
       for (int i = 0; i < t.Count; i++) 
       { 
        ArrayList al = t[i]; 
        if (Convert.ToInt32(al[0]) != Convert.ToInt32(ImgArry[0])) 
         temp.Add(al); 
       } 
       t = temp; 
1

削除が正常に機能していますが、渡しているアイテムがリスト内のアイテムと同等のテストを通過していません。

オブジェクトを指定して削除すると、リスト内のすべてのアイテムが見つかるまでそのアイテムの等価性(通常は.Equals()を介して)を試行し、削除されます。見つからない場合は、例外は発生しません。

+0

どうすればいいですか? – Rocky

+0

@Rockyサンプルコードで問題が示されていません。 'newpath'は' t'に条件付きで割り当てられます。これは未知の型の項目を持っていても持っていなくてもかまいません。あなたの質問は、現在直接的には答えることができません。私は 'Remove'がなぜ失敗したのかだけを答えることができます。 –

+0

私は手動で項目をチェックしているときリストから削除されていないと私の平等はパス – Rocky

0

ImgArryは、ローカル変数、参照型です。 Equals()の参照型の既定の動作は実際にはReferenceEquals()なので、作成したインスタンスはコンテナに入れられていない可能性があるため、これを実現できません。

最初に削除したくないアイテムを検索する必要があります。例えば。 :t.Find(a => a[0] == SelImgId)

あなたはt.Remove()以前に返品することができます。私はt.Remove(ImgArry)を削除した

関連する問題