我有两个列表,一个是字符串列表,另一个是称为“ 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”的属性,该属性也是字符串的类型。。。
答案 0 :(得分:0)
您可以使用RemoveAll
:
itemTransactions.RemoveAll(i => ItemIDs.Contains(i.ItemID));
不确定这是否更快,但是它更加简洁明了。您最终将不得不测试不同的选项,以查看哪种代码对您而言效果更好。
答案 1 :(得分:0)
ItemList.Where(item => !StringList.Contains(item.ItemID);
可以根据您的需求正常工作。