根据两个列表删除项目

时间:2019-01-30 13:20:24

标签: c# asp.net-mvc list asp.net-mvc-4 removeall

我有两个列表,一个是字符串列表,另一个是称为“ ItemTransactions”的复杂类型列表。

第一个列表包含ItemID的列表,并且基于该第一个列表,无论“ ItemTransactinos”列表中的ItemID出现在何处,都必须将其删除...

这两个列表很大时,像下面这样的传统方式执行起来很慢:

foreach (var item in ItemIDs) // ItemIDs is lsit of strings 
{
  itemTransactions.Remove(/*remove*/); // 1 itemID can occur multiple times in this list... So I would like to remove all items in this collections that correspond 1 ItemID at once if possible?
}

有人可以帮我吗?

P.S。 ItemTransactions集合包含名为“ ItemID”的属性,该属性也是字符串的类型。。。

2 个答案:

答案 0 :(得分:0)

您可以使用RemoveAll

itemTransactions.RemoveAll(i => ItemIDs.Contains(i.ItemID));

不确定这是否更快,但是它更加简洁明了。您最终将不得不测试不同的选项,以查看哪种代码对您而言效果更好。

答案 1 :(得分:0)

ItemList.Where(item => !StringList.Contains(item.ItemID);

可以根据您的需求正常工作。