从列表中删除最近添加的项目

use*_*933 3 c# list

List <Customer> collCustList = new List<Customer>();
Run Code Online (Sandbox Code Playgroud)

我试过了

if(A==B)
        collCustList.Add(new Customer(99, "H", "P"));

else
        collCustList.Remove(new Customer(99, "H", "P"));
Run Code Online (Sandbox Code Playgroud)

但它不起作用

我怎么能删除new item(new Customer(99, "H", "P"))我刚添加的?

谢谢

Sam*_*Sam 5

您尝试删除新的Customer实例,而不是删除刚刚添加的Customer实例.您需要获取对第一个Customer实例的引用并将其删除,例如:

Customer customer = new Customer(99, "H", "P");
collCustList.Add(customer);
collCustList.Remove(customer);
Run Code Online (Sandbox Code Playgroud)

或者,更简洁地说,如果你知道你正在删除你可能做的最新客户:

collCustList.Remove(collCustList.Last());
Run Code Online (Sandbox Code Playgroud)

如果您没有对要删除的Customer实例的现有引用,则可以使用Linq查询,如下所示:

Customer customer = collCustList.Where(c => c.Number == 99 && c.Type == "H" /* etc */).FirstOrDefault();
if (customer != null)
{
    collCustList.Remove(customer);
}
Run Code Online (Sandbox Code Playgroud)

甚至只是使用RemoveAll()方法:

collCustList.RemoveAll(c => c.Number == 99 && c.Type == "H" /* etc */);
Run Code Online (Sandbox Code Playgroud)