gpt4 book ai didi

c# - 从列表集合中删除项目不删除

转载 作者:行者123 更新时间:2023-11-30 19:43:31 26 4
gpt4 key购买 nike

我正在研究一个集合。我需要从集合中删除一项并使用过滤/删除的集合。

这是我的代码

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);

The issue is even after removing the item my collection still shows count 2.
What could be the issue?

编辑:

原始代码

  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

}
}
}

It is working fine. In actual code i was removing remediateItem. remediateItem was same type but it belongs to different collection.

最佳答案

您正在将对象传递给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))

关于c# - 从列表集合中删除项目不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14659760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com