如何将hashset项删除到另一个hashset

时间:2016-12-23 20:09:32

标签: c#

我有两个哈希集(HashSet<T> SetAHashSet<T> SetB),我需要将x个项目从一个项目移动到下一个项目以进行处理。基本上我正在创建一个队列系统,我不想通过每个系统。

SetA获取X项并加上SetB 流程SetB 循环直到SetA为空。

不起作用的事情:

BatchRecords.ToList().AddRange(AllOftheRecords.ToList().Take(maxRecords));

BatchRecords.ToList().AddRange(AllOftheRecords.Take(maxRecords));

既没有删除这些项目,也没有将它们添加到批次记录列表中。

我希望避免使用foreach循环,因为它必须获得前100条记录并将它们插入到另一个列表中。

1 个答案:

答案 0 :(得分:1)

您的代码无法按预期运行,因为BatchRecords.ToList()会创建一个新对象List,然后使用AllOftheRecords.ToList().Take(maxRecords)的结果进行扩充。 Take方法不会从原点中删除任何内容,它只会生成一个投影(IEnumerable),其中包含您请求的项目数(maxRecords)。

原始对象BatchRecordsAllOftheRecords在这些操作后保持不变。

不幸的是,HashSet没有像AddRange这样的List

您可以将HashSet更改为列表,也可以使用循环从中删除对象。