我有两个哈希集(HashSet<T> SetA
和HashSet<T> SetB
),我需要将x个项目从一个项目移动到下一个项目以进行处理。基本上我正在创建一个队列系统,我不想通过每个系统。
从SetA
获取X项并加上SetB
流程SetB
循环直到SetA
为空。
不起作用的事情:
BatchRecords.ToList().AddRange(AllOftheRecords.ToList().Take(maxRecords));
BatchRecords.ToList().AddRange(AllOftheRecords.Take(maxRecords));
既没有删除这些项目,也没有将它们添加到批次记录列表中。
我希望避免使用foreach循环,因为它必须获得前100条记录并将它们插入到另一个列表中。
答案 0 :(得分:1)
您的代码无法按预期运行,因为BatchRecords.ToList()
会创建一个新对象List
,然后使用AllOftheRecords.ToList().Take(maxRecords)
的结果进行扩充。 Take
方法不会从原点中删除任何内容,它只会生成一个投影(IEnumerable),其中包含您请求的项目数(maxRecords
)。
原始对象BatchRecords
和AllOftheRecords
在这些操作后保持不变。
不幸的是,HashSet
没有像AddRange
这样的List
。
您可以将HashSet更改为列表,也可以使用循环从中删除对象。