我有很长的Id(整数)列表,它们代表数据库中当前存在的所有项目:

var idList = GetAllIds();

我还有另一个巨大的通用列表,其中包含要添加到数据库中的项目:
List<T> itemsToAdd;

现在,我想从ID列表中已有ID的通用列表中删除所有项目。
当前idList是一个简单的数组,我减去这样的列表:
itemsToAdd.RemoveAll(e => idList.Contains(e.Id));

我很确定这可能会快得多,所以我应该对两个集合使用哪种数据类型,以及将它们相减的最有效方法是什么?

谢谢!

最佳答案

暂时将idList转换为HashSet<T>并使用相同的方法,即:

items.RemoveAll(e => idListHash.Contains(e.Id));

它应该更快

关于c# - 如何在C#中从另一个有效地减去一个巨大的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5091922/

10-14 11:52
查看更多