5

私はコレクションに取り組んでいます。コレクションから1つのアイテムを削除し、フィルター処理/削除されたコレクションを使用する必要があります。

これが私のコードです

public class Emp{
  public int Id{get;set;}
  public string Name{get;set;}
}

List<Emp> empList=new List<Emp>();
Emp emp1=new Emp{Id=1, Name="Murali";}
Emp emp2=new Emp{Id=2, Name="Jon";}
empList.Add(emp1);
empList.Add(emp2);

//Now i want to remove emp2 from collection and bind it to grid.
var item=empList.Find(l => l.Id== 2);
empList.Remove(item);

この問題は、コレクションにカウント2が表示されているアイテムを削除した後でも発生します。
問題は何でしょうか?

編集:

元のコード

  var Subset = otherEmpList.FindAll(r => r.Name=="Murali");

   if (Subset != null && Subset.Count > 0)
   {
    foreach (Empl remidateItem in Subset )
    {
       Emp removeItem = orginalEmpList.Find(l => l.Id== 
                                          remidateItem.Id);
                    if (removeItem != null)
                    {
                        orginalEmpList.Remove(remidateItem); // issue here

                    }
      }
    }

正常に動作しています。実際のコードでは、remediateItemを削除していました。remediateItemは同じタイプでしたが、異なるコレクションに属しています。

4

5 に答える 5

10

削除Removeしようとしているリストにないオブジェクトを他のリストにあるオブジェクトのコピーに渡しているため、オブジェクトは削除されていません。List.RemoveAllメソッドを使用して述語を渡します。

lst.RemoveAll(l => l.Id== 2);

IDの配列のような他のコレクションの多くのIDを削除したい場合

int []ids = new int[3] {1,3,7};
lst.RemoveAll(l => ids.Contains(l.Id))
于 2013-02-02T07:51:29.283 に答える
1
int removeIndex = list.FindIndex(l => e.Id== 2);
if( removeIndex != -1 )
{
    list.RemoveAt(removeIndex);
}

これはあなたのために働くかもしれないことを試してみてください

于 2013-02-02T07:46:16.620 に答える
1

貼り付けたこの元のコードは、完全に機能します。それに応じてアイテムを削除します。

List<Emp> empList = new List<Emp>();
Emp emp1 = new Emp { Id = 1, Name = "Murali" };
Emp emp2 = new Emp { Id = 2, Name = "Jon" };
empList.Add(emp1);
empList.Add(emp2);

//Now i want to remove emp2 from collection and bind it to grid.
var item = empList.Find(l => l.Id == 2);
empList.Remove(item);
于 2013-02-02T09:03:41.970 に答える
0

ラムダを間違って記述しました。このようにする必要があります

var item=empList.Find(l => l.Id== 2);
于 2013-02-02T07:43:06.387 に答える
-1

このブローを追加する必要がありますmenthodRemove():

orginalEmpList.SaveChanges();

于 2021-09-29T08:13:40.713 に答える